編程中的命名設(shè)計(jì)那點(diǎn)事_第1頁(yè)
編程中的命名設(shè)計(jì)那點(diǎn)事_第2頁(yè)
編程中的命名設(shè)計(jì)那點(diǎn)事_第3頁(yè)
編程中的命名設(shè)計(jì)那點(diǎn)事_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、編程中的命名設(shè)計(jì)那點(diǎn)事在我開始設(shè)計(jì)系統(tǒng)的時(shí)候,我會(huì)花去很多時(shí)間去設(shè)計(jì)命名,因?yàn)楹玫拿秃玫脑O(shè)計(jì)是分不開的。in the beginning was the word, and the word was with god, and the word was god太初有道。道與神同在,道就是神。 (約翰福音第一章,第一節(jié))在設(shè)計(jì)過程中給類,方法和函數(shù)好的命名會(huì)帶來好的設(shè)計(jì),雖然這不是一定成立,但是如果壞的命名那一定不會(huì)給你帶來好的設(shè)計(jì)。在設(shè)計(jì)過程,如果你發(fā)現(xiàn)你很難命名某一個(gè)模塊,某個(gè)方法時(shí),可能你真正遇到的問題不是難命名的問題,而是這個(gè)設(shè)計(jì)是否真的合理,你或許應(yīng)該花更多的時(shí)間來重新設(shè)計(jì)一下你的

2、模塊。好的命名不僅會(huì)帶來好的設(shè)計(jì),好的命名還提高了程序的可讀性,降低代碼維護(hù)的成本。另一方面,如果糟糕的命名會(huì)給代碼帶來一堵無(wú)形的墻,讓你必須深入代碼去研究代碼具有的行為,增加你理解代碼的時(shí)間。為此我總結(jié)了幾條關(guān)于命名的指導(dǎo)原則,希望這幾條原則能為你的命名設(shè)計(jì)帶來幫助,我使用的是c+的語(yǔ)法,當(dāng)然這些原則也很容易擴(kuò)展到其他語(yǔ)言中去。類型命名(類,接口,和結(jié)構(gòu))名字應(yīng)該盡量采用名詞bad:happygood:happiness不要使用類似名字空間的前綴bad:systemonlinemessagegood:system:online:message形容詞不要用太多,能描述清楚就行bad:iabst

3、ractfactorypatternbasegood:ifactory在類型中不要使用manager 或則 helper 或則其他沒意義的單詞如果你一定要在一個(gè)類型上加上manager或helper,那么這個(gè)類型要么就是命名的非常糟糕,要么就是設(shè)計(jì)的非常糟糕,如果是后則,那么這個(gè)類型就應(yīng)該管理manage和幫助help一下自己了。bad:connectionmanagerxmlhelpergood:connectionxmldocument, xmlnode, etc.如果某個(gè)類不能通過簡(jiǎn)單的命名來描述它具有的功能,可以考慮用類比的方式來命名bad:incomingmessagequeuech

4、aracterarrayspatialorganizergood:mailboxstringmap如果你使用類比,你就應(yīng)該一致的使用它們bad:mailbox,destinationidgood:mailbox,address函數(shù)(方法和過程)簡(jiǎn)潔bad:list.getnumberofitems()good:list.count()不要太簡(jiǎn)潔bad:list.verify()good:list.containsnull()避免縮寫bad:list.srt()good:list.sort()對(duì)于完成某件事情的函數(shù)使用動(dòng)詞bad:obj.refcount();good:list.clear();

5、list.sort();obj.addreference();對(duì)于返回布爾型的函數(shù),使用類似提問的方式bad:list.empty();good:list.isempty();list.contains(item);對(duì)于只是返回屬性,而不改變狀態(tài)的函數(shù)則使用名詞bad:list.getcount();good:list.count();不要在函數(shù)名字中重復(fù)參數(shù)的名稱bad:list.additem(item);handler.receivemessage(msg);good:list.add(item);handler.receive(msg);不要方法的名字中重復(fù)此方法的類的名稱bad:li

6、st.addtolist(item);good:list.add(item);不要在函數(shù)的名字中加入返回類型,除非函數(shù)名必須以返回類型進(jìn)行區(qū)別bad:list.getcountint();good:list.getcount();message.getintvalue();message.getfloatvalue();不要名字中使用and 或則 or如果你使用一個(gè)連接詞來連接函數(shù)名,那么這個(gè)函數(shù)肯定是做了太多的事情,更好的做法是將其分成更小的函數(shù)來處理(類似面向?qū)ο笤O(shè)計(jì)準(zhǔn)則中的責(zé)任單一原則)。如果你想確保是這是一個(gè)原子的操作,那么你應(yīng)該用一個(gè)名字來描述這個(gè)操作或一個(gè)類來封裝他bad:mail.verifyaddressandsendst

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論