新聞中心
注意:下面這個(gè)清單里描述的事情并不是你絕對(duì)不能做的,它只是用量化的方法來(lái)讓你知道編程上的這些做法將會(huì)產(chǎn)生的負(fù)面代價(jià)。

這些費(fèi)用是在代碼審查時(shí)你將要付出的。
不遵守編碼風(fēng)格
費(fèi)用: $0.02
代碼庫(kù)中的程序編碼風(fēng)格一致雖然不是很重要,但值得你去遵守。
在提交代碼的說(shuō)明信息上偷懶
費(fèi)用: $0.50
這主要是為了以后的查找。請(qǐng)細(xì)讀這篇代碼提交說(shuō)明信息指導(dǎo)(英文)。
使用局部變量
費(fèi)用: $1.00
大多數(shù)的局部變量都最好使用方法代替。注意:代碼塊參數(shù)除外。
多于一行的方法
費(fèi)用: $1.50
對(duì)多于一行代碼的方法要保持高度警惕。
超過(guò)5行的方法
費(fèi)用: $3.00
一個(gè)方法應(yīng)該只做一個(gè)事情。一個(gè)事情應(yīng)該用不了5行代碼就能完成。
很長(zhǎng)的類
費(fèi)用: $5.00
根據(jù)童子軍(Boy Scout)法則:同性戀應(yīng)該被禁止。哦,不,是另外一條:盡量只留下你會(huì)用到的代碼。當(dāng)你遇到一個(gè)比較長(zhǎng)的類時(shí),花點(diǎn)功夫精簡(jiǎn)它們。
使用魔幻數(shù)字
費(fèi)用: $7.00
在代碼中你只可以使用兩個(gè)數(shù)字:0和1。其它的都應(yīng)該用具有名字的常量代替。
在條件判斷中使用`||` 或 `&&`
費(fèi)用: $7.00
當(dāng)你發(fā)現(xiàn)有 `if foo && bar` 時(shí),把它提取到一個(gè)方法里,用來(lái)說(shuō)明`foo && bar` 究竟是什么意思。
使用 case 或 switch 語(yǔ)句
費(fèi)用: $15
一個(gè)swith語(yǔ)句基本上不是只做一個(gè)事情。它通常還會(huì)牽涉到其它類。
傳遞布爾參數(shù)
費(fèi)用: $15
依賴布爾參數(shù)的程序流轉(zhuǎn)叫做控制耦合,這是一種完全不應(yīng)該的高耦合。
類名用Manager結(jié)尾
費(fèi)用: $30
“Manager”是一個(gè)很含糊的詞,傳達(dá)不了任何意思。使用它,很有可能你的類承擔(dān)了過(guò)多的責(zé)任。
過(guò)度使用附加支持
費(fèi)用: $10/object created
盡量簡(jiǎn)化你測(cè)試時(shí)需要的附加支持工具。如果能用臨時(shí)對(duì)象代替,就避免使用數(shù)據(jù)庫(kù)。
測(cè)試中屏蔽某些功能
費(fèi)用: $10/屏蔽的方法
如果你在測(cè)試Foo類,你就不應(yīng)該屏蔽或短路Foo中的任何方法。你越想這樣做,越說(shuō)明你需要從Foo中把這些功能提煉出來(lái)放到其它地方。
在數(shù)據(jù)庫(kù)中觀察集成測(cè)試效果
費(fèi)用: $20
集成測(cè)試應(yīng)該通過(guò)UI來(lái)驗(yàn)證。不要去窺探數(shù)據(jù)庫(kù)。
注釋
費(fèi)用: $200/行
一千個(gè)注釋中頂多只有一條有合理存在的理由。其它的你應(yīng)該改進(jìn)代碼,直到不需要注釋。
注釋中包含 TODO 或 FIXME
費(fèi)用: $500/行
我不在意代碼分支中存在不多的TODO注釋,但絕對(duì)不要把它們合并的代碼庫(kù)中?!癋IXME”實(shí)際上是“fuck you”你的同事。
無(wú)意義的命名
費(fèi)用: $50/代碼審查者的疑惑
一定要努力努力好好給代碼命名。當(dāng)系統(tǒng)有變化時(shí)及時(shí)修改、改進(jìn)你的命名。當(dāng)發(fā)現(xiàn)有更好的名稱時(shí),不要等待,立即換掉。
靜態(tài)方法或類方法
費(fèi)用: $50/個(gè)
Ruby里的類方法具有可變?nèi)譅顟B(tài)。想辦法重構(gòu)它們。
不必要的屬性狀態(tài)變化
費(fèi)用: $100/變化
與其修改一個(gè)現(xiàn)有的記錄,不如創(chuàng)建一個(gè)新的,或return一個(gè)。與其刪除,不如做標(biāo)記。Rich Hickey 對(duì)此有一些你值得一讀的思考。
一個(gè)類有多個(gè)職責(zé)
費(fèi)用: $200/額外職責(zé)
一個(gè)類應(yīng)該只有一個(gè)職責(zé)或目的。幾乎沒(méi)有人因?yàn)槭沟妙愄《鲥e(cuò)。鑒于此,你的類很可能太大。
重復(fù)的代碼
費(fèi)用: $500
編程中幾乎沒(méi)有任何原則你必須遵守的,但避免代碼重復(fù)是個(gè)例外。代碼復(fù)制給維護(hù)造成困難,嚴(yán)重影響代碼質(zhì)量。
重復(fù)的測(cè)試代碼
費(fèi)用: $500
測(cè)試代碼并不是產(chǎn)品代碼的次要附屬物。它們的質(zhì)量同等重要。更嚴(yán)重的:維護(hù)一個(gè)糟糕的測(cè)試套件代碼可能會(huì)讓你欲哭無(wú)淚。
未經(jīng)測(cè)試的代碼
費(fèi)用: $1,000/行
未經(jīng)測(cè)試的代碼自誕生之時(shí)起就成了負(fù)擔(dān)。這樣做很不專業(yè)。
感謝Paul Graham先生的“On Lisp”,本文是受他的在某些函數(shù)上收稅的想法而啟發(fā)。
當(dāng)前名稱:低質(zhì)量軟件編程產(chǎn)生的成本價(jià)格細(xì)目表
鏈接URL:http://www.dlmjj.cn/article/djcjgeg.html


咨詢
建站咨詢
