一、有意義的命名及函數
- 類名:使用名詞,方法名:動詞
- 別用雙關語:避免將同一單詞用於不同目的。eg:add
- 使用解決方案領域名稱。eg:JobQueue;如果不能使用程序員熟悉的術語來給手頭的工作命名,就採用從所涉問題而來的名稱。
- 函數應短小(每行150字符,不超過100行,20行封頂最佳)。
- 函數只做一件事,同設計模式一樣,應儘量遵循單一權責原則及開閉原則。
- 每個函數中的語句,理應都要在同一抽象層級上。
- 沃德原則:如果每個例程都讓你感到深合己意,那就是整潔代碼(並且不要怕長名稱方法名)
- 函數的參數:最理想的參數數量是零,其次是一,再次是二,儘量避免三。有足夠特殊的理由才能用三個以上參數(阿里巴巴Java開發手冊:相同參數類型,相同業務含義,纔可以使用 Java 的可變參數,可變參數放在最後,儘量不用可變參數,避免使用Object)
- 標識參數:醜陋不堪,render(Boolean isSuite)代表了該函數在標識爲true會這樣做,爲false會那樣做。應該一分爲二——renderForSuite()和renderForSingleTest()
- 二元及三元函數:在當單個值的有序組成部分不確定時,多元函數並不是好的選擇
- 參數對象:如果函數看來需要兩個、三個或三個以上參數,就說明其中一些參數應該封裝爲類了。
Circle makeCircle(double x,double y,double radius)
Circle makeCircle(Point center,double radius)
後者優於前者
- 函數與參數:應是一種非常良好的動詞/名詞對形式
write(name) - 無副作用:在執行函數時,應不該造成其他部分的更改
- 分隔指令與詢問:函數要麼做什麼事,要麼回答什麼事
- 使用異常代替返回錯誤代碼,抽離Try/Catch代碼塊。Try/Catch代碼塊醜陋不堪,搞亂了代碼結構,最好把其中內容單獨寫成一個函數。
二、註釋
- 註釋