有意義的命名
名副其實
例如代碼中如果出現thsList,theArray
這些命名,應該賦予更加具有實際用途的命名。
比如用於保存用戶名的數組:usersNameArray
避免誤導
避免留下掩藏代碼本意的錯誤線索。例如:
- 使用了語言的預留的變量名
- 使用了與系統設計有誤導的命名:
userNameList
如果這個變量名不是一個List
類型 - 使用大寫的
O
小寫的l
來命名變量,使之看起來像數字的 0,1
有意義的區分
給相似屬性設置變量名是,需要從意義上做區分命名:
如money
與moneyAmount
區別不是很大
getUserInfo
、getUserMessage
與getUsers
,這些函數其實有點模糊,程序員怎麼能從名字就知道這個函數的具體意義?
可讀的命名
例如程序中有一個變量保存着出生日期(年,月,日)的數據使用了yearMonthsDay
,雖然這個的確“有意義”,同時也有點“搞笑”,因爲它並不符合語法,屬於程序員的自造詞,所以這也是不太合適。
使用可搜索的名稱
有時候在程序編寫時,需要使用常量與長字母名稱,目的是爲了方便搜索,當然這些主要是用於一些比較特別的需求,例如保存者全局狀態的標識等。
避免使用編碼
儘量避免使用其他編碼的語言,這樣會給解碼帶來負擔。例如:成員前綴(舊時代的產物),接口實現前綴使用IName
中的I
是冗雜的。
避免思維映射
程序員應當避免過度“思維上的想當然”,比如在循環計數器上,程序員常用的是i
,k
,j
這些短變量名,當然你也可以使用a,b,c
來替代。但是這樣比起i,k,j
而言,這幾個變量能夠讓其他程序員更明確知道這些變量是計數器變量。專業的程序員知道:明確既是王道
,應當編寫出其他人能夠理解的代碼。
類名
開頭首字母大寫,不應當出現動詞。
方法名
方法名應當是動詞或者動詞短語,避免出現一些俗語,應當以明確爲主。
一個概念對應一個詞
避免出現一種操作多種詞語形容,例如:contraoller
與manager
這2個詞語就會令人疑惑,這樣應該在一個類中或者一個模塊中選擇一個來代表一個概念。
避免歧義名稱(雙關語)
例如給數組增加一項數據,有從頭部、尾部、指定位置添加的區別,如果使用add
其他程序員需要理解下代碼才知道這是頭部還是尾部添加,所以可以使用append
、insert
、unshift
等來替代,讓其他程序員一目瞭然。
使用解決方案領域的名稱
記住,只有程序員纔會閱讀你的代碼,所以,儘管使用計算機領域的術語、名稱、模式名與數學屬於吧。
使用源自所涉問題領域的名稱
當上一個解決方案領域名稱不能滿足的時候,就採用從所涉問題領域來進行命名,至少程序員可以通過請教該問題領域專家。
添加有意義的語境
很少有名稱能自我說明,可以通過良好命名的類、函數、名稱空間來放置名稱,給讀者添加一定的語境加以聲明。如果沒這麼做,給名稱添加前綴是最後一招。
去除無意義的語境
比如:如果你的變量已經在一個GasStationDeluxe
類之中了,就無需在所有變量前再添加GSD
來表示說明。
小結
命名的進步需要經過一個長久的鍛鍊才能進步的,並不是通過看幾段代碼演示即可掌握的好。一個好的命名習慣是寫好代碼的基礎。