每過(guò)一段時(shí)間,我都能讀到一些好東西,它是如此的深刻見解,寫的如此的清晰,如此的條理,我必須把它收錄進(jìn)我的個(gè)人“史上最佳”圣物集里。最近,我新收錄了一篇,非常棒的一篇叫做《Best Practices for Scientific Computing》的文章,我希望每個(gè)來(lái)讀本文的讀者都找個(gè)時(shí)間讀讀它。我在這里列出它的要點(diǎn),是要鼓勵(lì)你去閱讀完整的全文。寫的真是非常好。
一、給人寫程序,而不是給計(jì)算機(jī)
1.一個(gè)程序,對(duì)于閱讀它的人來(lái)說(shuō),不應(yīng)該要求讀者一次性的在大腦里加載過(guò)多的背景/相關(guān)知識(shí)。
2.命名需要一貫、明確、有意義。
3.代碼風(fēng)格和格式要統(tǒng)一一致。
4.軟件開發(fā)中的各種工作都要分割成1小時(shí)左右的任務(wù)。
二、重復(fù)性的工作自動(dòng)化
1.讓計(jì)算機(jī)去做重復(fù)性的工作。
2.把最近使用過(guò)的命令存到一個(gè)文件里,以備復(fù)用。
3.使用編譯工具來(lái)自動(dòng)化系統(tǒng)流程。
三、用計(jì)算機(jī)做歷史記錄
1.用軟件工具來(lái)自動(dòng)跟蹤計(jì)算機(jī)的工作。
四、逐步改進(jìn)
1.每次做一小步,及時(shí)獲得反饋,及時(shí)糾正。
五、使用版本控制
1.使用一個(gè)版本控制系統(tǒng)。
2.所有由手工創(chuàng)建的東西都要放到版本控制系統(tǒng)里。
六、不要重復(fù)自己(或他人)
1.系統(tǒng)中的每一段數(shù)據(jù)都要有一個(gè)權(quán)威的單一的存在。
2.代碼應(yīng)該模塊化復(fù)用,而不是考來(lái)粘去。
3.復(fù)用代碼,而不是重寫代碼。
七、準(zhǔn)備好對(duì)付錯(cuò)誤的方法
1.在程序中增加斷言,檢查它們的各種操作。
2.使用現(xiàn)成的單元測(cè)試框架。
3.測(cè)試程序時(shí)借鑒所有的可用的經(jīng)驗(yàn)。
4.把bug做成測(cè)試用例。
5.使用一個(gè)有代碼指令的調(diào)試工具。
八、只在軟件能正確的工作后才可優(yōu)化
1.使用監(jiān)控工具找到瓶頸。
2.盡可能的用高級(jí)語(yǔ)言寫程序。
九、文檔里描述的應(yīng)該是設(shè)計(jì)思路和目的,而不是技術(shù)細(xì)節(jié)
1.描述接口和原因,而不是實(shí)現(xiàn)。
2.重構(gòu)代碼,而不是注釋解釋運(yùn)行原理。
3.引用其它程序時(shí)嵌入其它程序的文檔。
十、協(xié)作
1.代碼合并前進(jìn)行代碼審查。
2.當(dāng)幫帶新成員或解決特別詭異的問(wèn)題時(shí)使用結(jié)對(duì)編程。
我要額外提到的是這個(gè):
十一、 維護(hù)舊代碼。
聲明:eoe文章著作權(quán)屬于作者,受法律保護(hù),轉(zhuǎn)載時(shí)請(qǐng)務(wù)必以超鏈接形式附帶如下信息
原文作者: 安卓百曉生
原文地址: http://my.eoe.cn/862131/archive/1661.html