Code Complete這本書已經聽過好久,卻一直沒時間讀一下,這兩天把第一二章讀完了。html
工做了也有一年多了,也本身在項目中總結了一些東西:
eclipse
1.相同的東西要拎出來抽象成方法使用:
這個東西是吃了大虧的,其實抽象方法這種東西你要是每次第二次要調用它的時候就把他抽象出來的話,那樣是很清楚的,但要是第二次圖省事就copy paste大法,到後來若是要改這段代碼的話就須要改好多個地方的,若是別人問你要這個功能,你給他的是一段代碼的話,他那邊用過去,你這邊改了需求,最後就會出現integration的錯誤,數據上顯示出來以後去找真正的錯誤緣由就要找很久,雖然在重構一書中有這麼一句爲了追求工程速度與代碼優美的取捨,若是第二次你能夠採起copypaste,但實際上若是真這麼幹的話,第三次通常會犯拖延症,而後就各類難看以及難維護的代碼就出現了。
ide
2.transaction script:
在剛工做那段時間的時候,都是跟着別人代碼的風格來寫,好比寫個數據存儲的transaction code,原本的風格是寫個註釋,而後跟個十幾行的調用dao代碼,最後一個transaction得寫個100+行,代碼可讀性就是基於那幾行註釋了,但別人來看就會很累,而抽象成方法,就那麼幾行調用方法名的代碼,並且能很清楚的知道幹了什麼,本身之後有什麼需求要改,只須要改那個對象的相對應方法。
設計
3.關於if else以及switch:
這個東西通常取決於從頁面上取個值,而後都是'1' '2' '3'或者英文縮寫這些,若是代碼裏出現個if ('1'.equals(direction)),不是你本身,別人不看html代碼是確定不能看懂的了,而後我就會把'1' '2'這些變量提取爲consts,好比MODULENAME_DIRECTION_APPROVED='1',這樣以後寫這些equals代碼也會好讀不少,但若是一個模塊有10+個else if,那就又變得很難看了,用switch的話就會好看一些,但若是多個對象都要有這個方法處理的話,其實更好的方法是在作以前就作好設計,也就是code complete一書裏所提到的不管多麼緊急的項目,在coding以前都要作好設計,否則擴展性問題就會很嚴重,就好比兩個類Lion和Cat,兩個都是貓科動物,兩個又都是動物,那確定是再抽象一個父類出來,以後對他們的對象處理能夠在父類中加方法,以後繼承的子類要麼調用父類的方法,需求不一樣override掉方法,這樣就會方便得多,也不會出現各類else if的難看方法。code
4.eclipse refactor的一些經常使用快捷鍵
eclipse提供有refactor功能,你可使用快捷鍵alt+shift+t調出來,而後通常平時用到的也就4個:
1.extract method:顧名思義,就是把方法提出出來,提取後會默認在你的類中,若是你要移動它到其餘類中,你可使用:
2.move:點擊move後者按快捷鍵m就能夠有一個class的查找功能的對話框,找好後移過去就能夠了
3.extract local variable:在你屢次調用一個方法返回的變量時候,你可使用這個給他一個有意義的名字,提升代碼的可讀性,若是你只用了較少的次數,你也能夠用:
4.inline:把提取出來的local variable去除掉,從新用方法名替換掉。htm