程式設計中的命名設計那點事

2022-08-14 03:45:11 字數 3317 閱讀 9444

在我開始設計系統的時候,我會花去很多時間去設計命名,因為好的命名和好的設計是分不開的。

in the beginning was theword, 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 太初有道。道...

程式設計中的命名設計那點事

在我開始設計系統的時候,我會花去很多事情去設計命名,因為好的命名和好的設計是分不開的。in the beginning was the word,and the word was with god,and the word was god 太初有道。道與神同在,道就是神。約翰福音第一章,第一節 在設...