軟件雜談(2)- 正名

正名者刁憋,辨正名分也滥嘴。

這一篇至耻,我們簡短聊一個很多人不屑于聊的話題若皱,程序中的命名問題。

也就是說尘颓,我們在寫程序的時候走触,一個函數(shù)、變量疤苹、類互广、名空間文件到底應(yīng)該如何辨正名分卧土。

這個問題看似不值一提惫皱,可在大叔眼里,命名非常重要尤莺,名字好壞有可能決定程序的命運旅敷。

什么!什么缝裁!沒這么嚴(yán)重吧扫皱?


-1- 正名很重要


古人云:“立品為先,字如其人”捷绑。

意思是韩脑,先端正做人,再端正寫字粹污,通過寫字能夠影射出一個人的性格段多、心理、能力壮吩。

寫程序也類似进苍,通過代碼中的命名也能夠看出一個程序員的修養(yǎng)與功底。欲正其名鸭叙,先正其心觉啊,一個連變量名都起不好的程序員,很難寫出漂亮的代碼沈贝。

《論語·子路》篇有“名不正則言不順杠人,言不順則事不成”之說。名分不當(dāng)、名實不符嗡善,說話就不合理辑莫,事情就很難辦成。

程序既然是由編程語言表達(dá)的罩引,名不正也會導(dǎo)致言不順各吨。命名不恰當(dāng),會造成大問題袁铐。如果你無法想出一個合適的名字揭蜒,也許意味著你的設(shè)計有問題,需要加以重視剔桨。

試著想一想忌锯,假如把高級語言程序中的關(guān)鍵字、保留字领炫、邏輯運算符號統(tǒng)統(tǒng)去掉,可不就剩下你那些命名了嗎张咳?這么大體量的內(nèi)容帝洪,怎能不重要?

著名的問題調(diào)查網(wǎng)站Quora脚猾,曾經(jīng)問過程序員覺得最難的事情是什么葱峡,經(jīng)過大量反饋,命名占卻了一半龙助。

可見砰奕,命名是普遍問題,是難問題提鸟,是大問題军援。


那么,如何處理好這個問題呢称勋?

大叔認(rèn)為:欲正其名胸哥,必使其從類、符實赡鲜、達(dá)意空厌、守一,別無它法银酬。

什么意思嘲更?讓我們分而敘之。


-2-?從其類


所謂從其類揩瞪,是說名字要能準(zhǔn)確表達(dá)事物類別赋朦。

不需解釋,這個名字是成員變量、是類北发、是方法纹因、是函數(shù),是單例琳拨、是集合瞭恰、一目了然。

表達(dá)類別的習(xí)慣有很多狱庇,例如惊畏,用'm_'表達(dá)成員變量,‘f_'表明函數(shù)密任,前綴'_'表明私有颜启,匈牙利命名法中把變量類型冠以名字。

這里不多累述浪讳,標(biāo)準(zhǔn)習(xí)慣實在太多缰盏,無論通用的還是公司自己制定的,統(tǒng)一即可淹遵。


-3- 符其實


所謂符其實口猜,是說名字要能夠符合事物的真實性。

既要簡短透揣,又無歧義济炎;

要做到簡短就要:

1)無多余表達(dá)

例如: isPageRedirectInCurrentWorkflow

如果沒有Other Workflow的情況,InCurrentWorkflow就是多余的辐真。

如果上下文就是表達(dá)Page Redirect须尚,PageRedirect就是多余的。

例如: getAllCustomers

如果沒有Partial Customers, All就是多余的侍咱。

例如:labelString

如果是表達(dá)label字符串耐床,String是多余的。

2)無重復(fù)表達(dá)

例如:類Customer的實例方法getCustomerName

getName即可楔脯,不必重復(fù)Customer


-4-?達(dá)其意


所謂達(dá)其意咙咽,是說名字要準(zhǔn)確表達(dá)意圖。

命名常會用動詞淤年、形容詞來加以修飾钧敞,選好修飾詞也很重要。

“鳥宿池中樹麸粮,僧敲月下門溉苛。”?

唐代詩人賈島弄诲,為了斟酌“推”“敲”二字愚战,行路中都在思考娇唯。準(zhǔn)確表達(dá)命名的意圖,也需要有推敲的精神寂玲。

例如:isXXX常用來判別變量是否是XXX類型塔插。isShouldPay就不恰當(dāng),shouldPay即可拓哟;isInRange也不恰當(dāng), inRange即可想许。

例如:用getXXX, readXXX, fetchXXX, loadXXX要看行為的主體,有沒有讀取的過程断序,有沒有網(wǎng)絡(luò)傳輸流纹,有沒有加載的意圖。

例如:少用when, if這些詞违诗。getPaymentPlanSchedulesWhenModification就是很丑的名字漱凝,可以用getModifiedPaymentPlan。

有些行業(yè)性軟件诸迟,長久以來已經(jīng)形成了些慣用的叫法茸炒,類似于行內(nèi)話,最好能夠參考行業(yè)慣例阵苇。


-5-?守其一


所謂守其一扣典,是說名字要前后一致保持統(tǒng)一。

既是習(xí)慣的統(tǒng)一慎玖,也是情志的統(tǒng)一。

這一點非常重要笛粘,也是最常出的問題所在趁怔。即使命名不準(zhǔn)確,也比前后不統(tǒng)一薪前、混亂無章好润努。

例如:表達(dá)某個集合數(shù)據(jù),有時候用data示括,有時候用items铺浇,有時候用list,有時候用collection垛膝,這就糟了鳍侣。

命名的一致性,是代碼整潔的基礎(chǔ)吼拥,也能體現(xiàn)程序員修養(yǎng)的地方倚聚。

君子尚德,對內(nèi)有誠的一面:言行一致凿可,情志一致惑折。對外有敬的一面:為人著想,不蔓不枝。

今天叫個貓惨驶,明天叫個咪白热,在這里不行。

事無巨細(xì)粗卜,欲寫出漂亮的代碼屋确,要先從好的命名開始。

望諸君三思而命名休建。


-2018.07.04 蘭山 -

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末乍恐,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子测砂,更是在濱河造成了極大的恐慌茵烈,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件砌些,死亡現(xiàn)場離奇詭異呜投,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)存璃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進(jìn)店門仑荐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人纵东,你說我怎么就攤上這事粘招。” “怎么了偎球?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵洒扎,是天一觀的道長。 經(jīng)常有香客問我衰絮,道長袍冷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任猫牡,我火速辦了婚禮胡诗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘淌友。我一直安慰自己煌恢,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布震庭。 她就那樣靜靜地躺著症虑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪归薛。 梳的紋絲不亂的頭發(fā)上谍憔,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天匪蝙,我揣著相機(jī)與錄音,去河邊找鬼习贫。 笑死逛球,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的苫昌。 我是一名探鬼主播颤绕,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼祟身!你這毒婦竟也來了奥务?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤袜硫,失蹤者是張志新(化名)和其女友劉穎氯葬,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體婉陷,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡帚称,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了秽澳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片闯睹。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖担神,靈堂內(nèi)的尸體忽然破棺而出楼吃,到底是詐尸還是另有隱情,我是刑警寧澤妄讯,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布孩锡,位于F島的核電站,受9級特大地震影響捞挥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜忧吟,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一砌函、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧溜族,春花似錦讹俊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至寡壮,卻和暖如春贩疙,著一層夾襖步出監(jiān)牢的瞬間讹弯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工这溅, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留组民,地道東北人。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓悲靴,卻偏偏與公主長得像臭胜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子癞尚,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理耸三,服務(wù)發(fā)現(xiàn),斷路器浇揩,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,098評論 1 32
  • 要對自己足夠狠 才有可能得到想要的
    天娜日記閱讀 158評論 0 0