原文地址:http://www.jdon.com/jivejdon/thread/37355

千里之行,始于足下,千里之堤,毀于蟻穴,做好設(shè)計(jì)的第一步就是寫好你的代碼,博文8 Signs your code sucks總結(jié)了代碼中第一個(gè)感覺的臭味,讓你能夠于細(xì)微之處發(fā)現(xiàn)軟件的質(zhì)量問題。

1.方法內(nèi)代碼超過一個(gè)電腦屏幕:
一個(gè)方法只應(yīng)該執(zhí)行特定的任務(wù),一個(gè)方法不應(yīng)該包含一些這樣的邏輯,例如判斷用戶名字段包哈巴的數(shù)據(jù)是否有效,是否存在等。如果一個(gè)方法代碼大得超過一個(gè)屏幕,那么這是表明它做了太多的事情,需要切分。

2.你在重用變量:
除非你工作于嵌入式領(lǐng)域,否則內(nèi)存是便宜的,不要做內(nèi)存的守財(cái)奴,要注重可維護(hù)性。

3.你直接訪問request/session :
這和具體應(yīng)用服務(wù)器環(huán)境綁定,難于測(cè)試,所有應(yīng)用數(shù)據(jù)應(yīng)該直接解耦Session/request,保存到Bean中,通過 bean的 getters 和 setters方法, 創(chuàng)建使用者訪問數(shù)據(jù)的合約,這將大大幫助代碼的可維護(hù)性,個(gè)人補(bǔ)充,不要把類中的Collection字段直接通過Collection getCollection來暴露給外界,通過方法封裝對(duì)Collection的操作。


4.你需要使用注解來解釋代碼如何使用:
代碼應(yīng)該自己能夠解釋它如何使用,易于可讀,如果你發(fā)現(xiàn)你自己都需要注解專門解釋如何使用,那么就要重構(gòu)你的代碼。這里注解不是指javadoc等必要文檔。

5.一個(gè)exception系列錯(cuò)誤沒有返回最原始的錯(cuò)誤:
你不應(yīng)該吃掉exception錯(cuò)誤,在catch一個(gè)exception時(shí),要打印出其出錯(cuò)tack trace. 如果不知道錯(cuò)誤來源,如何糾正錯(cuò)誤呢?

6.你的代碼是一堆泥球:
代碼粘在一起,機(jī)會(huì)沒有分離分層,代碼應(yīng)該是模塊化,這樣易于維護(hù)和重用。 MVC是關(guān)注用戶View視圖界面發(fā)生的事情,控制器是關(guān)注程序流程和數(shù)據(jù)的校驗(yàn),而處理業(yè)務(wù)邏輯是領(lǐng)域模型的事情,只有模型可以和數(shù)據(jù)庫(kù)訪問直接進(jìn)行交互。

7.難于單元測(cè)試
如果你發(fā)現(xiàn)Bug,那么些一段新的代碼片段,它會(huì)花去你一些時(shí)間,但是這樣代碼就能處理更加復(fù)雜的事情了。