從機器的視角來看,變量、函數、類……的名字,是用來區別其它事物的。
從人的視角來看,區別其它事物只是對名字最基本的要求,名字還要能幫助讀者理解代碼。javascript
爲了讓讀者更好地理解代碼,起名時下面兩點須要注意:java
const limitOfLoginTries = 5;
這個變量用於定義:密碼輸入錯誤多少次,用戶將會被鎖定。編程
到底 錯 4 次會鎖定 仍是 錯 5 次會鎖定?
limit
在是否包含邊界值的問題上存在歧義。這裏用 max
更好。函數式編程
const getPath = (start, end) => { // expensive calculation ...... }
這個方法用於計算起點與終點間的路徑。函數
get
操做常見於從 map
中取一個元素。
潛意識會以爲它是一個輕量級的操做。
但示例方法會執行復雜的計算。方法調用者容易掉以輕心,重複調用,最終致使性能問題。
這裏用 caculate
更好。性能
上述兩個例子來源於《編寫可讀代碼的藝術》這本書。rest
const moneyMultiplyRatio = money * 0.027;
錢乘以一個比例,名字和代碼說的同樣。
看完了仍是不知道這個變量想幹嘛。
若是是利息的話,用 interest
要好得多。code
用變量名錶達變量的意圖。
給一段代碼起個名字,表達代碼的意圖,就是 function
。ip
把大象裝冰箱,閱讀理解 3 行名字
顯然比 100 行實現細節
更有效率。get
refrigerator.open(); refrigerator.put(elephant); refrigerator.close();
這和函數式編程中申明式的思想一致。
說明要幹什麼-what,隱藏技術細節-how。 寫的人思路更清晰,讀的人理解更輕鬆。