關(guān)于編程的一點(diǎn)感慨
寫(xiě)的代碼缺乏生命力:
- 過(guò)段時(shí)間自己看,都有些陌生益咬。
- 缺乏:設(shè)計(jì)思路圖文逮诲,文檔類(lèi)注釋?zhuān)瑴y(cè)試樣例代碼。
工作中幽告,有時(shí)要維護(hù)修改業(yè)務(wù)功能時(shí)梅鹦,總想重寫(xiě)掉得了,反而好維護(hù)冗锁。
大抵也是代碼缺乏生命的緣故帘瞭,這些代碼不能離開(kāi)維護(hù)他的人。
業(yè)務(wù)型的代碼誕生之初一般不太考慮離開(kāi)維護(hù)他的人蒿讥。
設(shè)計(jì)圖文
當(dāng)代碼量多時(shí),一般都會(huì)在心中或者在紙上抛腕,有個(gè)大概的結(jié)構(gòu)設(shè)計(jì)思路芋绸。
現(xiàn)在也僅僅有時(shí)寫(xiě)下些設(shè)計(jì)思路相關(guān)的注釋?zhuān)瑳](méi)有圖文。
實(shí)際也在本子上畫(huà)了些担敌,但是沒(méi)有保存到文檔里摔敛。
注釋
很少寫(xiě)注釋?zhuān)X(jué)得麻煩。只在個(gè)人覺(jué)得要說(shuō)明的地方寫(xiě)些自定義的注釋全封。
有注意把函數(shù)名和參數(shù)名取的有意義马昙。發(fā)現(xiàn)這時(shí)不夠的,有些信息無(wú)法描述:
- 異常相關(guān)的信息
- 調(diào)用的約束
- 參數(shù)和返回值的范圍
- 函數(shù)調(diào)用的外部條件
- 函數(shù)的一些特殊行為
google的代碼注釋詳盡刹悴,格式規(guī)整行楞,可用某某工具生成文檔。注釋的數(shù)量要和代碼量差不多了土匀。
兩個(gè)工作里子房,都沒(méi)有強(qiáng)調(diào)注釋的規(guī)范。
想是業(yè)務(wù)性的代碼更在乎快速出結(jié)果就轧,業(yè)務(wù)代碼都是誰(shuí)寫(xiě)誰(shuí)維護(hù)证杭。
注釋小結(jié)
- 業(yè)務(wù)代碼:寫(xiě)點(diǎn)簡(jiǎn)單注釋就夠了。一般邏輯不復(fù)雜妒御,都是在某個(gè)框架下解愤,復(fù)制模式。
- 庫(kù)代碼:這種是把代碼當(dāng)成產(chǎn)品發(fā)出去的乎莉,需要詳盡的文檔送讲。
測(cè)試代碼
畢業(yè)進(jìn)百度時(shí)還寫(xiě)過(guò)一段時(shí)間php的單元測(cè)試代碼奸笤。
好麻煩,為了測(cè)試數(shù)據(jù)庫(kù)部分李茫,還要用個(gè)mock框架揭保。測(cè)試代碼比業(yè)務(wù)代碼還多,感覺(jué)沒(méi)什么收益魄宏。
當(dāng)時(shí)就我這個(gè)剛?cè)肼毜膶?xiě)了一段時(shí)間秸侣。
看luna的源碼時(shí),發(fā)現(xiàn)有專(zhuān)門(mén)寫(xiě)一套測(cè)試代碼宠互,而后在自己寫(xiě)腳本語(yǔ)言時(shí)也寫(xiě)了個(gè)味榛。主要是對(duì)功能塊的黑盒測(cè)試樣例。
當(dāng)修改代碼時(shí)予跌,運(yùn)行測(cè)試可確保定義的行為沒(méi)有改變搏色。
google開(kāi)源的代碼普遍帶有測(cè)試代碼。
測(cè)試小結(jié)
- 業(yè)務(wù)代碼:就不用寫(xiě)測(cè)試了券册,特別是單元測(cè)試频轿,耗時(shí)費(fèi)力收益小。
- 庫(kù)代碼:最好寫(xiě)一批模塊黑盒測(cè)試代碼烁焙,確保定義的行為一直正確航邢。
后續(xù)看看要不要給子集寫(xiě)的幾個(gè)基礎(chǔ)庫(kù)形式的代碼加上測(cè)試代碼。
異常處理
一般不處理異常的骄蝇,把異常當(dāng)Assert膳殷,直接拋出它讓程序掛掉,處理的目的就是沒(méi)有異常九火。
有些時(shí)候異常是要處理的赚窃,如給人用的編輯器。
寫(xiě)編輯器工具時(shí)岔激,碼那么多簡(jiǎn)單的測(cè)試輸入的代碼真是手酸勒极。
業(yè)務(wù)性的代碼差不多都是這樣吧,各種檢驗(yàn)輸入虑鼎。