- 軟件中命名隨處可見。變量、函數、參數、類、封包,源代碼、目錄,等等;
名副其實
不規範:
int d;
規範:
int elapsedTimeInDays;
int daysSinceCreation;
int daysSinceModification;
int fileAgeInDays;
避免誤導
- 避免留下掩藏代碼本意的錯誤線索,儘量避免使用與本意相悖的詞;
經典錯誤: 小寫字母“l”和大寫字母“O”,容易看錯!!
int O;
int a,l;
if (O == 1)
a = 1;
else
l = 1;
做有意義的區分
- 程序員如果只是爲滿足編譯器或解釋器的需要修改代碼,就會製造麻煩;
經典錯誤: 以數字系列命名(a1, a2, …,aN),純屬誤導,完全沒有提供正確信息,沒有提供作者意圖的線索。
使用讀得出來的名稱
- 不要自己創造單詞
使用可搜索的名稱
避免使用編碼
-
編碼已經太多,不要再自找麻煩
-
不要再使用匈牙利命名法(變量名 = 類型名+變量名)了!
-
也不要使用
“m_”
前綴來標明成員變量了。應該把類和函數做得足夠小,消除對成員前綴的需要。讓前綴編程廢料,變成舊代碼的標誌物。
避免思維映射
- i,j,k 就是典型的循環計數器思維映射;
- 專業程序員瞭解“明確纔是王道”,專業程序員善用其能,編寫其他人能理解的代碼;
類名
- 類名和對象名應該是名詞或者名詞短語,如Customer、WikiPage、Account和AddressParser,避免使用Manager、Processor、Data或Info這樣的類名。
- 類名不應當是動詞;
方法名
- 方法名應當是動詞或動詞短語,如postPayment、deletePate或save。
每個概念對應一個詞
- 不要給多個類的同種方法名命名爲fetch、retrieve和get!等同義詞
- 又是controller又是manager,還有driver就會令人困惑
別用雙關語
- 一個add方法,表達了不同意思就是雙關語,這是用應該用近義詞append、insert等詞語代替;
使用解決方案領域名稱
- 只有程序員纔會讀你的代碼,儘量使用 計算機科學(CS)術語、算法名、模式名、數學術語吧!
- 取技術性名稱,通常是最靠譜的做法;
添加有意義的語境
- 很少有名稱是能自我說明的——多數都不能;
- 你需要用良好命名的類、函數或命名空間來放置名稱;
不要添加沒用的語境
-
只要短名稱足夠清楚,就要比長名稱好。別給名稱添加不必要的語境;
-
重命名,如果名稱改的更改,那大家真的會感激你。