<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    海上月明

    editer by sun
    posts - 162, comments - 51, trackbacks - 0, articles - 8
       :: 首頁(yè) :: 新隨筆 ::  :: 聚合  :: 管理

    [轉(zhuǎn)]編程中的命名設(shè)計(jì)那點(diǎn)事

    Posted on 2009-06-13 22:50 pts 閱讀(312) 評(píng)論(0)  編輯  收藏 所屬分類: JavaOthersPHPPython

    From: 好的命名確是很重要,也是顯示設(shè)計(jì)思路是否清晰的重要指標(biāo)

    在我開始設(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ì)過(guò)程中給類,方法和函數(shù)好的命名會(huì)帶來(lái)好的設(shè)計(jì),雖然這不是一定成立,但是如果壞的命名那一定不會(huì)給你帶來(lái)好的設(shè)計(jì)。在設(shè)計(jì)過(guò)程,如果你發(fā)現(xiàn) 你很難命名某一個(gè)模塊,某個(gè)方法時(shí),可能你真正遇到的問(wèn)題不是難命名的問(wèn)題,而是這個(gè)設(shè)計(jì)是否真的合理,你或許應(yīng)該花更多的時(shí)間來(lái)重新設(shè)計(jì)一下你的模塊。【無(wú)語(yǔ),我就經(jīng)常犯,功力不夠呀】

    好的命名不僅會(huì)帶來(lái)好的設(shè)計(jì),好的命名還提高了程序的可讀性,降低代碼維護(hù)的成本。另一方面,如果糟糕的命名會(huì)給代碼帶來(lái)一堵無(wú)形的墻,讓你必須深入代碼去研究代碼具有的行為,增加你理解代碼的時(shí)間。

    為此我總結(jié)了幾條關(guān)于命名的指導(dǎo)原則,希望這幾條原則能為你的命名設(shè)計(jì)帶來(lái)幫助,我使用的是C++的語(yǔ)法,當(dāng)然這些原則也很容易擴(kuò)展到其他語(yǔ)言中去。

    類型命名(類,接口,和結(jié)構(gòu))


    名字應(yīng)該盡量采用名詞
    Bad:           Happy
    Good:          Happiness

    不要使用類似名字空間的前綴
    Bad:           SystemOnlineMessage
    Good:          System::Online:Message

    形容詞不要用太多,能描述清楚就行
    Bad:           IAbstractFactoryPatternBase
    Good:          IFactory

    在類型中不要使用Manager 或則 Helper 或則其他沒意義的單詞
    如果你一定要在一個(gè)類型上加上Manager或Helper,那么這個(gè)類型要么就是命名的非常糟糕,要么就是設(shè)計(jì)的非常糟糕,如果是后則,那么這個(gè)類型就應(yīng)該管理manage和幫助help一下自己了。
    Bad:           ConnectionManager
                   XmlHelper
    Good:          Connection
                   XmlDocument, XmlNode, etc.

    如果某個(gè)類不能通過(guò)簡(jiǎn)單的命名來(lái)描述它具有的功能,可以考慮用類比的方式來(lái)命名
    Bad:           IncomingMessageQueue
                   CharacterArray
                   SpatialOrganizer
    Good:          Mailbox
                   String
                   Map

    如果你使用類比,你就應(yīng)該一致的使用它們
    Bad:           Mailbox,DestinationID
    Good:          Mailbox,Address

    函數(shù)(方法和過(guò)程)


    簡(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();
                   list.Sort();
                   obj.AddReference();

    對(duì)于返回布爾型的函數(shù),使用類似提問(wèn)的方式
    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è)連接詞來(lái)連接函數(shù)名,那么這個(gè)函數(shù)肯定是做了太多的事情,更好的做法是將其分成更小的函數(shù)來(lái)處理(類似面向?qū)ο笤O(shè)計(jì)準(zhǔn)則中的責(zé)任單一原則)。
    如果你想確保是這是一個(gè)原子的操作,那么你應(yīng)該用一個(gè)名字來(lái)描述這個(gè)操作或一個(gè)類來(lái)封裝他
    Bad:           mail.VerifyAddressAndSendStatus();
    Good:          mail.VerifyAddress();
                   mail.SendStatus();

    這是一篇非常優(yōu)秀的文章,我用我的語(yǔ)言在組織了一下,如果喜歡英文的讀者可以點(diǎn)擊這里閱讀原文



    主站蜘蛛池模板: 中文字幕在线免费观看| 青青青青青青久久久免费观看| 亚洲A∨无码无在线观看| 91香蕉国产线观看免费全集| 亚洲永久网址在线观看| 免费在线观看黄网| 精品一区二区三区无码免费视频| 亚洲乱码卡三乱码新区| 无码不卡亚洲成?人片| 午夜免费福利片观看| 日韩国产欧美亚洲v片| 国产精品久久久亚洲| 最近最好的中文字幕2019免费| 美女视频黄频a免费| 666精品国产精品亚洲| 免费人成视频在线观看不卡| 24小时在线免费视频| 免费的黄色的网站| 亚洲成aⅴ人片在线影院八| 亚洲情侣偷拍精品| 美女视频黄是免费的网址| 中文永久免费观看网站| 精品亚洲成A人无码成A在线观看| 国产亚洲精品高清在线| 最近中文字幕无吗免费高清| 中文字幕一区二区免费| 亚洲精品无码永久在线观看男男| 亚洲国产精品国自产拍AV| 国产又粗又猛又爽又黄的免费视频 | 91精品手机国产免费| 青草青草视频2免费观看| 亚洲乱码日产精品BD在线观看| 亚洲线精品一区二区三区影音先锋| 免费A级毛片无码免费视| 国产亚洲免费的视频看| 免费播放国产性色生活片| 亚洲欧美国产日韩av野草社区| 亚洲第一福利网站| 亚洲精品成人无限看| 亚洲国产精品毛片av不卡在线| 成人片黄网站A毛片免费|