在編程過(guò)程中,命名隨處可見(jiàn)。我們?cè)诰幊踢^(guò)程中,應(yīng)使命名名副其實(shí)。這件事很重要也很?chē)?yán)肅,選個(gè)好的名字要花很多時(shí)間,但是我們卻能省下更多的時(shí)間。而且我們一旦發(fā)現(xiàn)更好的名字就應(yīng)換掉舊的。
我們?cè)诿麜r(shí),名稱(chēng)就應(yīng)當(dāng)答復(fù)了大多數(shù)問(wèn)題。它應(yīng)該告訴你,它為什么存在,它做什么事,應(yīng)該怎么用。
- 有意義的區(qū)分
我們?cè)诿麜r(shí)應(yīng)依義命名。萬(wàn)萬(wàn)不能使用數(shù)字系列命名(a1,a2 ,···,aN),這樣的名稱(chēng)純屬誤導(dǎo)——完全沒(méi)有提供正確信息;沒(méi)有提供導(dǎo)向作者意圖的線(xiàn)索。 - 使用讀得出來(lái)的名稱(chēng)
- 使用可搜索的名稱(chēng)
- 避免使用編碼
- 避免思維映射
不應(yīng)當(dāng)讓讀者把你的名稱(chēng)翻譯成他們熟知的名稱(chēng)
-類(lèi)名
類(lèi)名和對(duì)象名應(yīng)該是名詞或名詞短語(yǔ) - 方法名
方法名應(yīng)當(dāng)是動(dòng)詞或動(dòng)詞短語(yǔ) - 每個(gè)概念對(duì)應(yīng)一個(gè)詞
給每個(gè)抽象概念選一個(gè)詞,并且一以貫之。 - 別用雙關(guān)語(yǔ)
- 使用解決方案領(lǐng)域名稱(chēng)
只有程序員才會(huì)讀你的代碼。所以盡管使用那些計(jì)算機(jī)科學(xué)領(lǐng)域術(shù)語(yǔ)、算法名、模式名、數(shù)學(xué)術(shù)語(yǔ)吧。
-使用源自所涉問(wèn)題領(lǐng)域的名稱(chēng)
如果不能用程序員熟悉的術(shù)語(yǔ)來(lái)命名就采取從所涉問(wèn)題領(lǐng)域來(lái)的名稱(chēng)。 - 添加有意義的語(yǔ)境
很少有名稱(chēng)是能自我說(shuō)明的。所以我們需要用良好命名的類(lèi)、函數(shù)或名名稱(chēng)空間來(lái)放置名稱(chēng),給讀者提供語(yǔ)境。如果沒(méi)有這么做,可以給名稱(chēng)添加前綴。
注意:不要添加沒(méi)用的語(yǔ)境,比如給所有類(lèi)添加同一個(gè)前綴。只要語(yǔ)義足夠清楚,短名稱(chēng)比長(zhǎng)名稱(chēng)要好。