---
# System prepended metadata

title: "[Code Review] Clean code\b篇"
tags: [Code Review]

---

>「減少重複、具有高度的表達力、並及早建立簡單抽象概念，這些對我而言，就是撰寫 Clean Code 的方法」
> [name=Uncle Bob]


## **命名** ##
「如果一個變數名稱還需要註解的輔助，那麼這個名稱就不具備展現意圖的能力」   

1. 變數使用可被搜尋的名字
2. 類別和物件用名詞來命名
3. 方法用動詞來命名，且:
    1. 取出器 (accessors): 使用 get 當字首
    2. 修改器 (mutators): 使用 set 當字首
    3. 判定器 (predicates) 使用 is 當字首
4. 每個概念都只使用一個詞
    1. 不同類別的存取方法，與其分別取為 "fetch"、"retrieve"、"access"，不如統一取作 "get"  


## **排版** ##
「程式的編排是很重要的。編排是一種溝通方式，而溝通是專業開發者的首要之務」
1. 垂直空白區隔不同的概念
    1. 類似的概念盡可能靠近 (Conceptual Affinity)
    2. 相依的函式 (Dependent Functions) 盡可能靠近
    3. 每一小段 Code 代表一個完整思緒
    4. 用空白分隔這些思緒、空白行的後方接續一個新而不同的概念
2. 變數的宣告盡可能靠近使用處
3. 一段好的Code的長度不會用到水平卷軸
4. 善用空白間隔和密度
    1. 密度表示功能密切相關的程度


## **註解** ##
「寫註解的其中一個動機，是因為程式碼寫的太糟糕」 
1. 註解無法彌補糟糕的程式碼，能愈少就愈少
2. 不要註解程式碼
3. 善用版控工具，不要用註解寫日誌


## **函式** ##
「函式應該要能做某件事，或能回答某個問題，但兩者不該同時發生」
1. 函式的參數數量至多用到 3 個
2. 一個函式應該要避免過度複雜

---
## **參考：** ##
[SQL樣式指南](https://www.sqlstyle.guide/zh-tw/)
[成為乾淨的開發者吧! Clean Code, Clean Coder, Clean Architecture 導讀之旅](https://ithelp.ithome.com.tw/users/20138643/ironman/3923)