|
我站出來就是為了要說一句:
請(qǐng)注釋你那該死的代碼。
每次我遇到一個(gè)程序員——有時(shí)是相當(dāng)高水的——總發(fā)現(xiàn)他會(huì)認(rèn)為:你并不需要給你的代碼加注釋。我要說,這就是胡說八道。我很長(zhǎng)時(shí)間以來一直這么表達(dá)。問題是,讓事情改變要比你想象的難。雖然我們正處在努力編寫那些討厭的代碼、準(zhǔn)備發(fā)布一些會(huì)令人驚嘆的新東西的緊要關(guān)頭,我們?nèi)匀粠缀踝⑨屗械臇|西。沒有任何借口不去做這些事情。每隔 3 到 7 行代碼,你就能看到有長(zhǎng)篇的社論發(fā)表。有時(shí),幾百行代碼里,你就能找到一個(gè)很好的笑話。
錯(cuò)誤的藏身之處
看,一個(gè)是你想要的,一個(gè)是你實(shí)現(xiàn)的。你的 bug 就在這兩者之間。如果寫了注釋,你就是在告訴我你想要的。而你的代碼中告訴我你是如何去做的。程序的缺陷要么存在于你想要的想法中,要么,需求是對(duì)的,而你的代碼有問題。請(qǐng)幫助我,讓我知道究竟是哪個(gè)錯(cuò)了。
不要偷懶
一個(gè)常見的反對(duì)聲音是:我聽說,注釋經(jīng)常會(huì)過期,因?yàn)榇a會(huì)經(jīng)常更新,而注釋不會(huì)。你不更新注釋嗎?你的同事也不?不要偷懶,不要養(yǎng)成一個(gè)讓人認(rèn)為偷點(diǎn)兒懶無所謂的文化氛圍。告訴同事你是如何一絲不茍的注釋程序的,讓他們知道你也希望他們這樣去做。說不注釋是因?yàn)榕履橙嘶蚰承┑胤皆趯頃?huì)造成你的錯(cuò)誤,這只是在找借口。
你是有經(jīng)驗(yàn)的人
人本無知,這很自然,但你是有經(jīng)驗(yàn)的人。因此,你有義務(wù)教育那些需要學(xué)習(xí)的人。你的注釋會(huì)指導(dǎo)那些正在閱讀你的代碼的人。告訴他們?yōu)槭裁丛谶@里要用 Tuple 數(shù)據(jù)結(jié)構(gòu),而不是用其它的(更好的做法是附加一個(gè) stack overflow 或 dotNETperls 上的鏈接 … 你完全可以做到這些,不是嗎?)你在這走了一個(gè)什么捷徑?如果不走捷徑你就不能按時(shí)發(fā)布,所以,告訴這些新手你遇到的特殊情況。否則的話,最終你的不好的代碼將會(huì)被四處拷貝,四處散播。看!你寫的爛代碼變成了公司的程序模板!完全沒有注釋!
你會(huì)打字
我的招聘過程有一部分是白板編程,一部分是鍵盤編程。所有好的程序員都是打字高手。就說你每分鐘能打出 40-60 詞。那請(qǐng)你告訴我,為什么在你機(jī)槍掃射似的編寫代碼時(shí)不加上注釋呢?當(dāng)然,你可以花 30 秒時(shí)間告訴我,代碼寫的這樣一團(tuán)糟是因?yàn)楦銟I(yè)務(wù)的那個(gè)家伙需要程序在本周發(fā)布而換回不菲的 7.5 萬美元。可是下個(gè)月呢?這些代碼不要了?封存到石頭里了?我知道這些代碼是在干什么。但請(qǐng)告訴我你的意圖。
你在一天天變老
聽我說,我編程已經(jīng)很久了,也許早在你上中學(xué)之前。我仍然在編程,我仍然喜歡編程。有朝一日,你也會(huì)變的跟我一樣老。如果你到了像我一樣(那時(shí)我已經(jīng)沒有能力再教育你),那時(shí),有太多的層,有太多的抽象,有太多的技術(shù)架構(gòu),你無法完全記住。你的注釋就能出來指導(dǎo)你。它們會(huì)告訴你,6 個(gè)月前,你是用這種方法、這種模式實(shí)現(xiàn)的,而且這樣做只是為了炫耀。如果你是一個(gè)真正優(yōu)秀——并且仍然在做編程的程序員——你會(huì)認(rèn)識(shí)到,這些代碼寫的很爛,你現(xiàn)在需要以不同的方式重新實(shí)現(xiàn)它。而你仍然有你的注釋來讓你回憶起當(dāng)時(shí)的想法和為什么這樣做。
所以,請(qǐng)注釋你那該死的代碼。
it知識(shí)庫(kù):請(qǐng)注釋你那該死的代碼,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。