在我開始設計系統的時候,我會花去很多事情去設計命名,因為好的命名和好的設計是分不開的。
in the beginning was the word, and the word was with god, and the word was god
太初有道。道與神同在,道就是神。 (約翰福音第一章,第一節)
在設計過程中給類,方法和函式好的命名會帶來好的設計,雖然這不是一定成立,但是如果壞的命名那一定不會給你帶來好的設計。在設計過程,如果你發現你很難命名某乙個模組,某個方法時,可能你真正遇到的問題不是難命名的問題,而是這個設計是否真的合理,你或許應該花更多的時間來重新設計一下你的模組。
好的命名不僅會帶來好的設計,好的命名還提高了程式的可讀性,降低**維護的成本。另一方面,如果糟糕的命名會給**帶來一堵無形的牆,讓你必須深入**去研究**具有的行為,增加你理解**的時間。
為此我總結了幾條關於命名的指導原則,希望這幾條原則能為你的命名設計帶來幫助,我使用的是c++的語法,當然這些原則也很容易擴充套件到其他語言中去。
型別命名(類,介面,和結構)
名字應該盡量採用名詞
不要使用類似名字空間的字首
bad: systemonlinemessage
good: system::online:message
使用能描述清楚的形容詞
bad: iabstractfactorypatternbase
good: ifactory
在型別中不要使用manager 或則 helper 或則其他沒意義的單詞
如果你一定要在乙個型別上加上manager或helper,那麼這個型別要麼就是命名的非常糟糕,要麼就是設計的非常糟糕,如果是後則,那麼這個型別就應該管理manage和幫助help一下自己了。
bad: connectionmanager
xmlhelper
good: connection
xmldocument, xmlnode, etc.
如果某個類不能通過簡單的命名來描述它具有的功能,可以考慮用模擬的方式來命名
bad: incomingmessagequeue
characterarray
spatialorganizer
good: mailbox
string
map如果你使用模擬,你就應該一致的使用它們
bad: mailbox,destinationid
good: mailbox,address
函式(方法和過程)
簡潔bad: list.getnumberofitems()
good: list.count()
不要太簡潔
bad: list.verify()
good: list.containsnull()
避免縮寫
bad: list.srt()
good: list.sort()
對於完成某件事情的函式使用動詞
bad: obj.refcount();
good: list.clear();
list.sort();
obj.addreference();
對於返回布林型的函式,使用類似提問的方式
bad: list.empty();
good: list.isempty();
list.contains(item);
對於只是返回屬性,而不改變狀態的函式則使用名詞
bad: list.getcount();
good: list.count();
不要在函式名字中重複引數的名稱
bad: list.additem(item);
handler.receivemessage(msg);
good: list.add(item);
handler.receive(msg);
不要方法的名字中重複此方法的類的名稱
bad: list.addtolist(item);
good: list.add(item);
不要在函式的名字中加入返回型別,除非函式名必須以返回型別進行區別
bad: list.getcountint();
good: list.getcount();
message.getintvalue();
message.getfloatvalue();
不要名字中使用and 或則 or
如果你使用乙個連線詞來連線函式名,那麼這個函式肯定是做了太多的事情,更好的做法是將其分成更小的函式來處理(類似物件導向設計準則中的責任單一原則)。
如果你想確保是這是乙個原子的操作,那麼你應該用乙個名字來描述這個操作或乙個類來封裝他
bad: mail.verifyaddressandsendstatus();
good: mail.verifyaddress();
mail.sendstatus();
程式設計中的命名設計那點事
在我開始設計系統的時候,我會花去很多時間去設計命名,因為好的命名和好的設計是分不開的。in the beginning was theword,and the word was with god,and the word was god 太初有道。道與神同在,道就是神。約翰福音第一章,第一節 在設計...
程式設計中的命名設計那點事
本文引自http cocre.com p 990 在我開始設計系統的時候,我會花去很多時間去設計命名,因為好的命名和好的設計是分不開的。in the beginning was theword,and the word was with god,and the word was god 太初有道。道...
程式設計中的命名設計那點事
在設計過程中給類,方法和函式好的命名會帶來好的設計,雖然這不是一定成立,但是如果壞的命名那一定不會給你帶來好的設計。在設計過程,如果你發現 你很難命名某乙個模組,某個方法時,可能你真正遇到的問題不是難命名的問題,而是這個設計是否真的合理,你或許應該花更多的時間來重新設計一下你的模組。好的命名不僅會帶...