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

2021-06-22 07:51:00 字數 2703 閱讀 2889

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

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 太初有道。道...

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

在設計過程中給類,方法和函式好的命名會帶來好的設計,雖然這不是一定成立,但是如果壞的命名那一定不會給你帶來好的設計。在設計過程,如果你發現 你很難命名某乙個模組,某個方法時,可能你真正遇到的問題不是難命名的問題,而是這個設計是否真的合理,你或許應該花更多的時間來重新設計一下你的模組。好的命名不僅會帶...