Clean Code讀書筆記(1)---有意義的命名
阿新 • • 發佈:2020-12-27
選個好名字要花費時間,但省下來的時間比花掉的多。注意命名,而且一旦發現有更好地名稱,就換掉舊的。名字一定需要符合其本意。
舉例:
要表達消逝的時間,以日記。不好的命名: int d; 好的命名: int elapsedTimeInDays
獲取訂單項Id的韓函式:
不好的命名:
List<int> GetOrderItems(Order order) { List<int> list1 = new List<int>(); foreach(var item in order.Items) { list1.Add(item.Id) }return list1; }
好的命名:
List<int> GetOrderItemIds(Order order) { List<int> ids = new List<int>(); foreach(var item in order.Items) { ids.Add(item.Id) } return ids; }
應該避免在名字中使用會產生誤導的詞。
舉例:
假如要表示一組賬戶: 不好的名字: accountList(會誤導讀者以為是List資料型別), 好的名字: accounts
當要區分兩個表示相同概念的事物時,需要做到有意義的區分。而不是僅僅是讓編譯器能通過。
舉例:
要寫一個將資料從一個數組拷貝到另一個數組的函式時:
不好的命名
public void copyNumber(List<int> numbers1, List<int> numbers2) { foreach(int item in numbers1) { numbers2.Add(item); } } // numbers1和numbers2不是有意義的區分,僅僅是讓編譯通過而已。
好的命名
public voidcopyNumber(List<int> sourceNumbers, List<int> destinationNumbers) { foreach(int item in sourceNumbers) { destinationNumbers.Add(item); } }
需要使用讀得出來的英語單詞進行命名。
比如我要表示一個更新時間變數。不好的命名:DateTime lastUpdatemdhms; 好的命名:DateTime lastUpdateTime.
對於每個抽象概念,我們可以對應到一個特定的詞。然後在整個系統中各個模組中都使用這個詞,保持統一。比如獲取資料都用fetch或者get作為字首。
不要新增沒用的語境
只要短名稱足夠清楚,就要比長名稱好。不要給名稱新增不必要的語境。保持名稱的精煉。