名副其實
- 選個好名字要花時間骂租,但省下來的時間比花掉的多祷杈。
- 一旦發(fā)現(xiàn)有更好的名稱,就換掉舊的渗饮。
- 好的名稱會告訴你:它為什么會存在吠式,它做什么事,應(yīng)該怎么用抽米。
避免誤導(dǎo)
- 應(yīng)該避免留下掩藏代碼本意的錯誤線索特占。應(yīng)當避免使用與本意相悖的詞。
- 不要在名稱中寫出容器類型名云茸∈悄浚可以用group或bunchOf或者加s。
- 提防使用不同之處較小的名稱标捺。
- 以同樣的方式拼寫出同樣的概念才是信息懊纳。拼寫不一致就是誤導(dǎo)。
誤導(dǎo)產(chǎn)生問題原因:程序員大多數(shù)時候根本不看詳細注釋亡容;用IDE的快速搜索功能
的時候會因為命名差距較小出現(xiàn)一堆無用的結(jié)果嗤疯。
做有意義的區(qū)分
- 不要使用相近含義的單詞,例如:ProductData闺兢,ProductInfo茂缚,這里Info和Data就是意義含混的廢話。
- 廢話是冗余,例如:nameString脚囊,這里name難道會是一個浮點數(shù)不成龟糕。
使用讀得出來的名稱
如果名稱讀不出來,討論的時候就像個傻鳥悔耘。
使用可搜索的名稱
- 不要使用
單字母名稱
或數(shù)字常量
讲岁。很難在一大篇文字中找出來。因此長名稱勝于短名稱衬以,搜得到的名稱勝于用自造編碼代寫就的名稱缓艳。 - 單字母名稱僅用于短方法的本地變量澜躺,名稱長短應(yīng)與其作用域大小相對應(yīng)姐叁。若變量或常量可能在代碼中多處使用固耘,則應(yīng)賦其以便于搜索的名稱旭旭。
避免使用編碼
- 編碼已經(jīng)太多,不要在代碼邏輯中又增加一種編碼“語言”绸硕。
- 帶編碼的語言不利于發(fā)音,容易打錯。
匈牙利語標記法:現(xiàn)代編程語言具有更豐富的類型系統(tǒng)车猬,編譯器記得并強制使用類型。而且尺锚,人們趨向于使用更小的類珠闰、更短的方法,好讓每個變量的定義都在視野范圍之內(nèi)瘫辩。
成員前綴:應(yīng)當把類和函數(shù)做的足夠小伏嗜,消除對成員前綴的需要。使用某種可以高亮或用顏色標出成員的編譯環(huán)境伐厌。
接口與實現(xiàn):我不想讓用戶知道我給他們的是接口承绸。如果接口和實現(xiàn)必須選一個來編碼,選實現(xiàn)挣轨,加Impl军熏。
避免思維映射
不要讓讀者在腦海中把你的名稱翻譯為他們熟知的名稱。這說明你起的名稱不夠明確
卷扮。
類名
名詞或名詞詞組
方法名
- 動詞或動詞詞組荡澎。
- 屬性訪問器、修改器和斷言應(yīng)該根據(jù)其值命名晤锹,并依JavaBean標準加上get摩幔、set和is前綴。
- 重載構(gòu)造器時鞭铆,使用:描述了參數(shù)的靜態(tài)工廠方法名或衡,將相應(yīng)的構(gòu)造器私有化,強制使用這種命名手段。
別扮可愛
你的幽默薇宠、文化背景偷办,別人可能不懂。
每個概念對應(yīng)一個詞
給每個抽象概念選一個詞澄港,并且一以貫之椒涯。
別用雙關(guān)語
避免將同一單詞用于不同目的。
使用解決方案領(lǐng)域名稱
只有程序員才會讀你的代碼回梧。所以废岂,盡管用程序員都懂的術(shù)語。依據(jù)問題所涉領(lǐng)域來命名會讓協(xié)作者總是跑去問客戶每個名稱的含義狱意。
使用源自所涉問題領(lǐng)域的名稱
這是在上一條無法使用的時候湖苞,才去使用的辦法,至少負責(zé)維護代碼的程序員能去請教領(lǐng)域?qū)<摇?/p>
優(yōu)秀的程序員和設(shè)計師详囤,其工作之一就是分離解決方案領(lǐng)域和問題領(lǐng)域的概念财骨。與所涉問題領(lǐng)域更為貼近的代碼,應(yīng)當采用源自問題領(lǐng)域的名稱藏姐。
添加有意義的語境
如果前面的都不好使了隆箩,給名稱添加前綴就是最后一招了。當然更好的方案是創(chuàng)建一個類把字段封裝進去羔杨,這樣就提供了語境了捌臊。
不要添加沒用的語境
只要短名稱足夠清楚,就要比長名稱好兜材。別給名稱添加不必要的語境理澎。精確是命名的要點。不要搞到:輸入G曙寡,按下自動完成鍵糠爬,結(jié)果會得到系統(tǒng)中全部類的列表,列表恨不得有一公里那么長举庶。這樣搞的IDE都沒法幫助你V让!灯变!