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

下載本文檔

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

文檔簡介

編程中的命名設(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ì)一下你的模塊。好的命名不僅會(huì)帶來好的設(shè)計(jì),好的命名還提高了程序的可讀性,降低代碼維護(hù)的成本。另一方面,如果糟糕的命名會(huì)給代碼帶來一堵無形的墻,讓你必須深入代碼去研究代碼具有的行為,增加你理解代碼的時(shí)間。為此我總結(jié)了幾條關(guān)于命名的指導(dǎo)原則,希望這幾條原則能為你的命名設(shè)計(jì)帶來幫助,我使用的是C+的語法,當(dāng)然這些原則也很容易擴(kuò)展到其他語言中去。類型命名(類,接口,和結(jié)構(gòu))名字應(yīng)該盡量采用名詞Bad:HappyGood:Happiness不要使用類似名字空間的前綴Bad:SystemOnlineMessageGood:System:Online:Message形容詞不要用太多,能描述清楚就行Bad:IAbstractFactoryPatternBaseGood:IFactory在類型中不要使用Manager 或則 Helper 或則其他沒意義的單詞如果你一定要在一個(gè)類型上加上Manager或Helper,那么這個(gè)類型要么就是命名的非常糟糕,要么就是設(shè)計(jì)的非常糟糕,如果是后則,那么這個(gè)類型就應(yīng)該管理manage和幫助help一下自己了。Bad:ConnectionManagerXmlHelperGood:ConnectionXmlDocument, XmlNode, etc.如果某個(gè)類不能通過簡單的命名來描述它具有的功能,可以考慮用類比的方式來命名Bad:IncomingMessageQueueCharacterArraySpatialOrganizerGood:MailboxStringMap如果你使用類比,你就應(yīng)該一致的使用它們Bad:Mailbox,DestinationIDGood:Mailbox,Address函數(shù)(方法和過程)簡潔Bad:list.GetNumberOfItems()Good:list.Count()不要太簡潔Bad:list.Verify()Good:list.ContainsNull()避免縮寫B(tài)ad:list.Srt()Good:list.Sort()對(duì)于完成某件事情的函數(shù)使用動(dòng)詞Bad:obj.RefCount();Good:list.Clear();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:list.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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論