国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

高效程序設(shè)計的七個習慣

2017-05-12 09:53文艾陳衛(wèi)衛(wèi)
計算機教育 2017年4期
關(guān)鍵詞:程序設(shè)計編碼習慣

文艾+陳衛(wèi)衛(wèi)

(解放軍理工大學 指揮信息系統(tǒng)學院,江蘇 南京 210007)

摘 要:分析大學生難以掌握程序設(shè)計技能的問題,提出學生的程序設(shè)計習慣是導(dǎo)致上述問題的關(guān)鍵因素。根據(jù)程序設(shè)計和教學方面的經(jīng)驗,總結(jié)出高效程序設(shè)計的七個習慣,并說明實踐過程,最后指出這些習慣可有效提高學員的程序設(shè)計效率。

關(guān)鍵詞:程序設(shè)計;習慣;編碼;迭代

1 背 景

程序設(shè)計是計算機及相關(guān)專業(yè)學生必須掌握的一門重要技能。然而,從歷年畢業(yè)生的學習情況來看,能夠較好地掌握程序設(shè)計能力的學生只是一小部分,還有相當一部分學生無法順利地設(shè)計程序,甚至不會編程,其中不乏高分學生。為何同樣的課程設(shè)置、同樣的教材,甚至同一個教師,學習結(jié)果有如此差異?針對上述問題,已有很多研究和解決方案[1-3]。筆者從學生個體差異的角度進行分析,認為智力不是上述問題的關(guān)鍵因素,因為對同一所大學的學生來說,除特別突出者,絕大部分學生處在同一水平,而每個學生在程序設(shè)計學習和實踐過程中的個人習慣,才是導(dǎo)致上述現(xiàn)象的關(guān)鍵因素。

為此,筆者根據(jù)程序設(shè)計開發(fā)和教學方面的經(jīng)驗,總結(jié)出高效程序設(shè)計的七個習慣,并利用學院的本科生導(dǎo)師制,將這些習慣的養(yǎng)成貫穿到人才培養(yǎng)的各個方面。

2 高效程序設(shè)計的七個習慣

高效程序設(shè)計的七個習慣分別是:①先找輪子;②從最簡出發(fā);③讓程序先跑起來;④友好編碼;⑤即時驗證;⑥無損迭代;⑦定期備份。

2.1 先找輪子

在進行程序設(shè)計之前,不要急于開始編碼,而是要盡可能地找到與設(shè)計目標相對應(yīng)的實現(xiàn),稱之為“輪子”。在互聯(lián)網(wǎng)上,程序設(shè)計的資源非常豐富,尤其隨著開源運動的蓬勃發(fā)展,小到一個簡單的Hello World程序,大到操作系統(tǒng),都有開源實現(xiàn)。對于初學者,先找到輪子,就可以站在巨人的肩膀上,快速進入某個專業(yè)領(lǐng)域。比如,設(shè)計一個分布式文件系統(tǒng),如果從零開始,會非常復(fù)雜,如果能找到MFS(一個開源的分布式文件系統(tǒng)),就可以從使用、設(shè)計到編碼實現(xiàn),全方位地進行學習和借鑒,會大大節(jié)省時間,并迅速累積經(jīng)驗;又如,JPEG圖片的編碼和解壓功能,如果從零開始實現(xiàn),不但需要掌握JPEG算法原理,還要考慮實現(xiàn)的效率,在時間和可行性上是不可接受的,如果能找到JPEG的開源實現(xiàn),然后在此基礎(chǔ)上進行修改,適配需求,就會大大節(jié)省時間。

2.2 從最簡出發(fā)

設(shè)計一個復(fù)雜程序的時候,不要試圖一次實現(xiàn)整個程序,應(yīng)該先實現(xiàn)其最核心的功能,然后進行多次迭代,形成最終的版本。程序從本質(zhì)上講,就是邏輯的組合,一次實現(xiàn)這些復(fù)雜的邏輯,對開發(fā)者來說,可能無法把控,有時即便實現(xiàn)了,穩(wěn)定性也無法保證。在實現(xiàn)之前,可以先對這些邏輯進行分解,確定哪些是核心、是不可再分的,哪些可以后續(xù)進行組合,再按照先核心、后外圍的順序進行開發(fā)。比如,要實現(xiàn)一個聊天軟件,其最核心的功能就是網(wǎng)絡(luò)通信,因此,可以先實現(xiàn)Server端和Client端的網(wǎng)絡(luò)通信,然后在此基礎(chǔ)上定義消息、完善功能。又如,用硬件語言實現(xiàn)CPU時,如果先對指令進行分類,然后實現(xiàn)代表指令,構(gòu)建數(shù)據(jù)通路,后續(xù)的指令就可以線性添加,不需要改變數(shù)據(jù)通路和狀態(tài)機,只需要改變控制信號,這樣整個CPU的復(fù)雜邏輯就可以實現(xiàn)。

2.3 讓程序先跑起來

無論是設(shè)計程序還是學習代碼,讓程序跑起來都是第一要義。如果是設(shè)計程序,一開始就讓程序跑起來,可以及時對程序邏輯進行驗證,從而避免錯誤的累積;如果是學習代碼,讓程序跑起來可以直接觀察程序的運行狀態(tài)和輸出結(jié)果,必要時還可以進行調(diào)試,這樣可以快速理解代碼的含義和設(shè)計機制。

2.4 友好編碼

友好編碼是指編寫代碼時,要遵守一定的編碼規(guī)范,具體來說包括文件、目錄、變量、函數(shù)的命名規(guī)則、代碼縮進與對齊、注釋風格等。不同的語言有不同的規(guī)定,例如C語言的代碼風格和Java語言就有所區(qū)別,即使是同一種語言,也可能有多種風格,應(yīng)盡量選取大多數(shù)人遵循的風格。再如,在Linux平臺下設(shè)計C程序,就可以參照內(nèi)核代碼或者平臺軟件(如GCC)的代碼風格。

2.5 即時驗證

即時驗證是指對代碼進行一定修改后,要及時驗證,有效防止錯誤的累積。由于修改前的代碼已經(jīng)過驗證,因此,修改后如果出現(xiàn)錯誤,可以根據(jù)提示信息,比照修改的代碼部分,迅速定位。即時驗證包括語法驗證和語義驗證。一般來說,一旦做出代碼修改,就應(yīng)立即進行語法驗證,即重新編譯、鏈接代碼;而一旦完成某個邏輯功能的修改,應(yīng)立即進行語義驗證,運行相應(yīng)的測試用例。

2.6 無損迭代

無損迭代是指在擴展功能時,要注意新增代碼不能影響原有代碼的穩(wěn)定性。在具體實施中,功能的增加盡可能采用代碼追加的方式實現(xiàn),而不是重構(gòu)代碼,這樣雖然可能導(dǎo)致代碼冗余,但是程序的原有功能沒有改變,新增功能即使有問題,也可以迅速定位。

2.7 定期備份

定期備份的重要性不言而喻,最重要的是要形成習慣并長期堅持。此外,備份的對象不僅包括代碼,也應(yīng)包括開發(fā)環(huán)境等;備份的存儲對象,不僅在本機,也可實時備份到移動設(shè)備或者網(wǎng)絡(luò);為了方便版本管理,可以利用git等優(yōu)秀工具;對于非常重要的代碼和文件,除了使用git進行備份外,還應(yīng)進行完全備份。

上述習慣對于高效程序設(shè)計有非常重要的作用,具體體現(xiàn)在以下幾個方面。

(1)加速程序開發(fā)。先找到輪子可以讓程序開發(fā)基于已有的實現(xiàn),而不需要從零開始編碼。

(2)減少出錯。讓程序先跑起來可以檢查程序的語法錯誤,同時可以動態(tài)調(diào)試程序,減少出錯;即時驗證可以立即驗證程序的語法和語義錯誤,將錯誤限定在最近一次修改中,便于快速定位錯誤。

(3)確保復(fù)雜程序的可靠性。從最簡出發(fā)使程序的邏輯遵循從簡單到復(fù)雜的順序,確保每個簡單程序的正確性,確保最終復(fù)雜程序的可靠性;無損迭代可以使程序在添加新功能后,原有功能的可靠性不受影響。

(4)提升協(xié)作效率。友好編碼可以使程序的編碼遵循統(tǒng)一風格,提升團隊協(xié)作開發(fā)的效率。

(5)確保開發(fā)進程的可靠性。定期備份可以確保整個開發(fā)進行中所需資源的可靠性,避免資源丟失后的重復(fù)勞動。

3 實踐結(jié)果

近年來,筆者共隨機選取22人參加高效程序習慣的養(yǎng)成實踐,結(jié)果表明學員掌握程序設(shè)計技能的時間大幅縮短,且程序設(shè)計的水平相對普通學員普遍較高。參與該實踐的學員中,獲得畢業(yè)設(shè)計良好以上的有20人次,獲得全國軟件大賽一等獎9人次、二等獎7人次,還獲得多項大學程序競賽獎。在2013年,有學員作為江蘇高校的唯一代表,獲得第三屆中科杯全國軟件大賽一等獎(一等獎覆蓋率不到千分之三),是當時軍隊院校參賽以來的最好成績;在2014年,學員獲得第五屆藍橋杯全國軟件大賽團隊賽選拔賽一等獎(一等獎覆蓋率不到百分之五),也是當時軍隊院校參賽以來的最好成績;在2015年,參與實踐的4名本科合訓(xùn)學員作為軍隊唯一代表,參加首屆全國高校云計算應(yīng)用創(chuàng)新大賽,面對與全國14支985、211大學的博士、碩士團隊的競爭,他們沉著應(yīng)戰(zhàn),獲得大賽最高獎項——特等獎,新華日報、解放軍報、網(wǎng)易新聞等對此進行了報道。由于上述學員均來自“本科生導(dǎo)師制”隨機分配的學員,并未擇優(yōu)選取,因此樣本具有普遍性。

4 結(jié) 語

實踐結(jié)果表明,高效程序開發(fā)的七個習慣可以幫助學生在有限的時間內(nèi),快速掌握程序設(shè)計技能,提升獨立解決問題的能力。要實現(xiàn)高效程序設(shè)計,僅僅明白上述七個習慣遠遠不夠,重要的是將它們轉(zhuǎn)化成程序設(shè)計中不易改變的習慣。因此,研究如何讓學員更高效和牢固地養(yǎng)成上述習慣是下一步工作的方向。

第一作者簡介:文艾,男,講師,研究方向為云計算、大數(shù)據(jù)開發(fā),hdfsha@126.com,

參考文獻:

[1]丁金鳳. 基于計算思維的程序設(shè)計類課程教學實踐[J]. 計算機教育, 2012(15): 65-68.

[2]陳杰華. 程序設(shè)計課程中強化計算思維訓(xùn)練的實踐探索[J]. 計算機教育, 2009(20): 84-85.

[3]劉振華. 計算機應(yīng)用型本科人才程序設(shè)計能力培養(yǎng)[J]. 計算機教育, 2010(12): 38-40.

(編輯:孫怡銘)

猜你喜歡
程序設(shè)計編碼習慣
基于OBE的Java程序設(shè)計個性化教學研究
項目化教學在Python程序設(shè)計課程中的應(yīng)用
C++程序設(shè)計課程教學改革研究
住院病案首頁ICD編碼質(zhì)量在DRG付費中的應(yīng)用
習慣
醫(yī)學專業(yè)“Python程序設(shè)計”課程教學改革總結(jié)與思考
上課好習慣
好習慣
高效視頻編碼幀內(nèi)快速深度決策算法
不斷修繕 建立完善的企業(yè)編碼管理體系
泽普县| 双辽市| 沅陵县| 北安市| 大埔县| 南召县| 开鲁县| 芒康县| 华容县| 济宁市| 迭部县| 龙海市| 资中县| 汉中市| 靖远县| 青冈县| 酉阳| 延川县| 上栗县| 黄浦区| 堆龙德庆县| 台中县| 宁明县| 松溪县| 称多县| 威海市| 宜良县| 益阳市| 织金县| 宕昌县| 永定县| 濮阳市| 陕西省| 历史| 集安市| 包头市| 东辽县| 保德县| 扶风县| 灵川县| 新巴尔虎左旗|