{%hackmd BJzAwtWvp %} # [Clean Code]涵式 ## 簡短!! * 關於涵式的首要準則就是簡短 * 而第二項準則就是要比第一項的簡短涵式還要更簡短! * 簡短地透露出本身的意圖,每個涵式都帶著你至下個涵式,這就是涵式該有的簡短。 ## 區塊與縮排 * if、else、while及其他敘述都應該只有一行,而那航程式通常是涵式呼叫敘述。 * 涵式不應該大道包含潮狀結構,因此涵式裡的縮排程度不應該大過一層或兩層,這會使的涵式更容易閱讀與理解。 ## 只做一件事 * 涵式應該只做一件事情。他們應該把這件事做好。而且它們應該只做這件事情 > Leo王-想起李國修: 別牽拖牽絆 人一輩子做好一件事情就功德圓滿 別想要貪多嚼不爛 * 甚麼叫做只做一件事? * 如果你無法從其中提煉出另一個function那就是只做了一件事情 ## 使用劇描述能力的名稱 * Ward原則 當每個你看到的城市,執行結果都與你想得差不多,你會察覺到你正在clean code之上。即使你取的名字很長,也比較短卻難以理解的命名好。 ## 函釋的參數最好的情況是0個 * 其次是1個,再來兩個,盡量避免三個及三個以上的參數。 ## 旗標(flag)參數 * 使用旗標參數(即函式的參數為布林值)是一個非常不好的寫法,因為這表明這個函示內做了兩件事情,那個違反只做一件事的初衷,且一定可以分成兩個函式。 ## 要無副作用 * 如下方範例,函式名稱並沒有顯示該函式有Session.initialeze()的功能,故別人來使用可能會忽略其中有執行到這個功能,而只是在check password而已,而導致整個工作階段毀掉 ```java public class UserValidator { private Cryptographer cryptographer; public boolean checkPassword(String userName, String password){ User uer = UserGateway.findByName(userName); if(user != User.NULL){ String codePhrase = user.getPhraseEncodedByPassword(); String phrase - cryptographer.decrypt(codedPhrase, password); if("Valid Password".equals(phrase)){ Session.initialize(); return true; } } return false; } } ``` ## 提取try/catch 區塊 * 擾亂絲路,應以throws exception取代之 ## 不要重複自己 * 重複的code是寫程式中,萬惡的根源! ## 結論 寫軟體就像寫作一樣,當你寫一篇論文或一篇文章時,你會先把想法寫下來,然後開始琢磨,直到他讀起來很通順。 第一份初稿通常雜亂無章,所以你開始修改,重新組織整個文章段落,將文章改善致你想要的樣子為止。 所以不可能有人可以在第一版完成的程式碼就完全符合clean code的所有需求,而是會在過程中盡可能符合,並在結束後,在繼續修改至最符合clean code的作品。 好了 我讀完這些東西以後發現,我以前寫了一堆大便 :D --- ###### tags: `cleanCode`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up