筆記-代碼精進(jìn)之路:從碼農(nóng)到工匠

我有一個(gè)夢(mèng)想乍恐,我寫的代碼评疗,可以像詩歌一樣優(yōu)美。
我有一個(gè)夢(mèng)想茵烈,我做的設(shè)計(jì)百匆,能恰到好處,既不過度呜投,也無不足加匈。

整潔面向?qū)ο蠓謱蛹軜?gòu) (Clean Object-oriented and Layered Architecture存璃, COLA

本書的結(jié)構(gòu)本書共分為三大部分:技藝部分、思想部分和實(shí)踐部分雕拼。

命名其實(shí)很難

命名為什么難呢纵东?因?yàn)槊倪^程本身就是一個(gè)抽象和思考的過程,在工作中啥寇,當(dāng)我們不能給一個(gè)模塊偎球、一個(gè)對(duì)象、一個(gè)函數(shù)辑甜,甚至一個(gè)變量找到合適的名稱的時(shí)候衰絮,往往說明我們對(duì)問題的理解還不夠透徹,需要重新去挖掘問題的本質(zhì)栈戳,對(duì)問題域進(jìn)行重新分析和抽象岂傲,有時(shí)還要調(diào)整設(shè)計(jì)和重構(gòu)代碼。因此子檀,好的命名是我們寫出好代碼的基礎(chǔ)镊掖。

Martin Fowler也表示過,他最喜歡的一句諺語是:“在計(jì)算機(jī)科學(xué)中有兩件難事:緩存失效和命名褂痰。(There are only two hard things in Computer Science: cache invalidationand naming things.)

  1. 變量名
    變量名應(yīng)該是名詞亩进,能夠正確地描述業(yè)務(wù),有表達(dá)力缩歪。
  2. 函數(shù)名
    函數(shù)命名要具體归薛,空泛的命名沒有意義。例如匪蝙,processData()就不是一個(gè)好的命名主籍,因?yàn)樗械姆椒ǘ际菍?duì)數(shù)據(jù)的處理,這樣的命名并沒有表明要做的事情逛球,相比之下千元,validateUserCredentials()或者eliminateDuplicateRequests()就要好許多。函數(shù)的命名要體現(xiàn)做什么颤绕,而不是怎么做幸海。
  3. 類名
    實(shí)體類承載了核心業(yè)務(wù)數(shù)據(jù)和核心業(yè)務(wù)邏輯,其命名要充分體現(xiàn)業(yè)務(wù)語義奥务,并在團(tuán)隊(duì)內(nèi)達(dá)成共識(shí)物独,如Customer、Bank和Employee等氯葬。
    輔助類是輔佐實(shí)體類一起完成業(yè)務(wù)邏輯的挡篓,其命名要能夠通過后綴來體現(xiàn)功能。例如溢谤,用來為Customer做控制路由的控制類CustomerController瞻凤、提供Customer服務(wù)的服務(wù)類CustomerService憨攒、獲取數(shù)據(jù)存儲(chǔ)的倉儲(chǔ)類CustomerRepository世杀。
  4. 包名
    包(Package)代表了一組有關(guān)系的類的集合阀参,起到分類組合和命名空間的作用。包名應(yīng)該能夠反映一組類在更高抽象層次上的聯(lián)系瞻坝。例如蛛壳,有一組類Apple、Pear所刀、Orange衙荐,我們可以將它們放在一個(gè)包中,命名為fruit浮创。

保持一致性

每個(gè)概念對(duì)應(yīng)一個(gè)詞忧吟,并且一以貫之。例如斩披,fetch溜族、retrieve、get垦沉、find和query都可以表示查詢的意思煌抒,如果不加約定地給多個(gè)類中的同種查詢方法命名,你怎么記得是哪個(gè)類中的哪個(gè)方法呢厕倍?同樣寡壮,在一段代碼中,同時(shí)存在manager讹弯、controller和handler蔚出,會(huì)令人感到困惑稳懒。因此在項(xiàng)目中,作者通常按照表1-1所示的約定,保持命名的一致性师骗。


約定

多使用對(duì)仗詞

  • add/remove
  • increment/decrement
  • open/close
  • begin/end
  • insert/delete
  • show/hide
  • create/destroy
  • lock/unlock
  • source/target
  • first/last
  • min/max
  • start/stop
  • get/set
  • next/previous
  • up/down
  • old/new

小心注釋

如果注釋是為了闡述代碼背后的意圖,那么這個(gè)注釋是有用的缅帘;如果注釋是為了復(fù)述代碼功能磷杏,那么就要小心了,這樣的注釋往往意味著“壞味道”(在Martin Fowler的《重構(gòu):改善既有代碼的設(shè)計(jì)》一書中庇楞,注釋就是“壞味道”之一)榜配,是為了彌補(bǔ)我們代碼表達(dá)能力的不足。就像Brian W.Kernighan說的那樣:“別給糟糕的代碼加注釋——重新寫吧吕晌。

1.不要復(fù)述功能
2.要解釋背后意圖

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蛋褥,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子睛驳,更是在濱河造成了極大的恐慌烙心,老刑警劉巖膜廊,帶你破解...
    沈念sama閱讀 221,888評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異淫茵,居然都是意外死亡爪瓜,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門匙瘪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來铆铆,“玉大人,你說我怎么就攤上這事丹喻”』酰” “怎么了?”我有些...
    開封第一講書人閱讀 168,386評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵碍论,是天一觀的道長(zhǎng)谅猾。 經(jīng)常有香客問我,道長(zhǎng)鳍悠,這世上最難降的妖魔是什么税娜? 我笑而不...
    開封第一講書人閱讀 59,726評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮贼涩,結(jié)果婚禮上巧涧,老公的妹妹穿的比我還像新娘。我一直安慰自己遥倦,他們只是感情好谤绳,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著袒哥,像睡著了一般缩筛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上堡称,一...
    開封第一講書人閱讀 52,337評(píng)論 1 310
  • 那天瞎抛,我揣著相機(jī)與錄音,去河邊找鬼却紧。 笑死桐臊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的晓殊。 我是一名探鬼主播断凶,決...
    沈念sama閱讀 40,902評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼巫俺!你這毒婦竟也來了认烁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,807評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎却嗡,沒想到半個(gè)月后舶沛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,349評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡窗价,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評(píng)論 3 340
  • 正文 我和宋清朗相戀三年如庭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舌镶。...
    茶點(diǎn)故事閱讀 40,567評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡柱彻,死狀恐怖豪娜,靈堂內(nèi)的尸體忽然破棺而出餐胀,到底是詐尸還是另有隱情,我是刑警寧澤瘤载,帶...
    沈念sama閱讀 36,242評(píng)論 5 350
  • 正文 年R本政府宣布否灾,位于F島的核電站,受9級(jí)特大地震影響鸣奔,放射性物質(zhì)發(fā)生泄漏墨技。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評(píng)論 3 334
  • 文/蒙蒙 一挎狸、第九天 我趴在偏房一處隱蔽的房頂上張望扣汪。 院中可真熱鬧,春花似錦锨匆、人聲如沸崭别。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽茅主。三九已至,卻和暖如春土榴,著一層夾襖步出監(jiān)牢的瞬間诀姚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評(píng)論 1 272
  • 我被黑心中介騙來泰國打工玷禽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赫段,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,995評(píng)論 3 377
  • 正文 我出身青樓矢赁,卻偏偏與公主長(zhǎng)得像糯笙,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子坯台,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評(píng)論 2 359