新聞中心

EEPW首頁(yè) > 牛人業(yè)話 > 寫(xiě)代碼不寫(xiě)注釋?!無(wú)注釋主義了解一下~

寫(xiě)代碼不寫(xiě)注釋?!無(wú)注釋主義了解一下~

作者:天雷君 時(shí)間:2018-09-17 來(lái)源:電子產(chǎn)品世界 收藏

據(jù)說(shuō),共產(chǎn)黨員入黨時(shí)需要面向黨旗宣讀誓言,在莊嚴(yán)、肅穆的氣氛中,宣誓人懷抱著拳拳報(bào)國(guó)之心,壓抑著胸中的激蕩不已,熱淚盈眶、目光堅(jiān)定地朗讀簡(jiǎn)潔有力的誓言,沉甸甸的誓言中有一句話特別鼓舞人心:為共產(chǎn)主義奮斗終身。

本文引用地址:http://butianyuan.cn/article/201809/391975.htm

“主義”實(shí)在是一個(gè)好東西,它看似虛無(wú)縹緲,卻可以指導(dǎo)國(guó)家和人民的工作和生活。當(dāng)今社會(huì)正處于劇烈變革之中,各種主義粉墨登場(chǎng),占據(jù)了不同群體的精神世界,犬儒主義、樂(lè)觀主義、民本主義、民族主義、實(shí)用主義、貿(mào)易保護(hù)主義、自由主義、資本主義、社會(huì)主義、達(dá)達(dá)主義、完美主義、教條主義等等,不一而足,每一個(gè)主義承托著一個(gè)思想世界,各種主義讓我們獲得新知,受到教益,筆者在多年的科研工作生涯中摸爬滾打,一路荊棘,也漸漸在寫(xiě)方面形成了自己的主義-無(wú)主義!

1

有人說(shuō),上帝給你關(guān)上一扇門,必然會(huì)為你開(kāi)啟一扇窗,筆者對(duì)此金句頷首低眉,深以為然。就拿我來(lái)說(shuō)吧,為人木訥,不善言談,典型一個(gè)三腳跺不出一個(gè)屁來(lái)的悶葫蘆,但是又頗喜寫(xiě)作,雖然文筆欠佳,卻也經(jīng)常文思涌動(dòng),恨不能剝皮為紙,以血為墨,折骨為筆,寫(xiě)它個(gè)一死方休。

筆者不僅以文字記錄工作生活、思想感悟,曾經(jīng),還以為田,筆耕不輟,到了不寫(xiě)就不寫(xiě)的地步。當(dāng)然,筆者的也難脫俗套,范疇基本上只限于解釋代碼的設(shè)計(jì)思路、具體實(shí)現(xiàn)的注意事項(xiàng)、關(guān)鍵變量的作用、函數(shù)調(diào)用參數(shù)的說(shuō)明等內(nèi)容。時(shí)過(guò)境遷,當(dāng)時(shí)的心境也已難尋,現(xiàn)在想來(lái),當(dāng)時(shí)之所以要寫(xiě)注釋,一方面是循規(guī)蹈矩隨大流,別人都寫(xiě)咱也寫(xiě),另一方面,很大程度上是下意識(shí)地以文字代替語(yǔ)言,就好像要給他人解釋代碼,生怕哪段代碼沒(méi)有注釋,無(wú)法卸掉口頭給他人講代碼的責(zé)任一般。

2

這個(gè)世界懲罰自由散漫的人,也同時(shí)在懲罰循規(guī)蹈矩之人。人通過(guò)各種教條給自己設(shè)置了多個(gè)條條框框,在編織的牢籠里自得其樂(lè),也必然會(huì)受到桎梏自吞苦果。

“注釋”就是這樣一個(gè)牢籠。

星爺曾經(jīng)說(shuō)過(guò),能力越大,責(zé)任就越大。隨著技術(shù)水平的日益提高,領(lǐng)導(dǎo)開(kāi)始將更加復(fù)雜艱巨的任務(wù)放到我的肩頭,肩負(fù)領(lǐng)導(dǎo)囑托,懷抱精忠報(bào)國(guó)之心,我寫(xiě)的代碼也開(kāi)始越來(lái)越多,越來(lái)越復(fù)雜了,同時(shí),代碼里的注釋也慢慢增多了。

寫(xiě)代碼自有其客觀規(guī)律,那就是:需要不斷地修改、完善、優(yōu)化。就像在泳池中不斷變換各種泳姿一樣,筆者孜孜不倦地調(diào)整、打磨代碼,看著代碼日益精益、完美,頗有一種樂(lè)在其中、雖九死而猶未悔的體會(huì),以至于代碼慢慢地變得面目全非,而注釋基本上依然固執(zhí)地保持著最初的模樣,就好似已然開(kāi)始自由泳,說(shuō)明書(shū)卻還是蛙泳的動(dòng)作講解,自由泳是繃腳掌,蛙泳是翻腳掌,欲不吃虧,可得乎?!

3

楞嚴(yán)經(jīng)中說(shuō):如人以手,指月示人。彼人因指,當(dāng)應(yīng)看月。若復(fù)觀指以為月體,此人豈唯亡失月輪,亦亡其指。就是說(shuō),假如有人用手指著月亮給你看,你應(yīng)該順著手指的方向去看月亮,如果你不看月亮,反而仔細(xì)地研究起這只纖纖玉手那纖細(xì)玉潤(rùn)的手指來(lái),多半會(huì)像“不知妻美”的東哥那樣失了分寸,動(dòng)心而忍不了性的。

注釋就是那根手指,代碼才是那彎明月。

楞嚴(yán)經(jīng)這段話的真正意思是:我們學(xué)習(xí)佛陀的經(jīng)典,要通過(guò)這些語(yǔ)言文字,體悟它背后所蘊(yùn)含的深深義理,靠此義理指示,明悟我們的清凈佛心。不能執(zhí)著在語(yǔ)言文字上,以為那就是佛心,就是佛法。那就永遠(yuǎn)找不到清凈佛心了,因?yàn)榘颜Z(yǔ)言文字當(dāng)作佛心,當(dāng)作佛法,其實(shí),已經(jīng)失去了佛心真正的大圓滿、大具足、大光明、大無(wú)礙了!

不同的是,代碼的變化總是在不經(jīng)意間悄悄發(fā)生的,曾幾何時(shí),注釋這根手指所指向的已經(jīng)不是最新代碼這顆明月了,我本將心向明月,奈何明月照溝渠??!

既然注釋很難跟得上代碼的變化,為什么那么多技術(shù)大牛都像模像樣地給后晉菜鳥(niǎo)們諄諄教誨,告誡他們注釋很重要,要養(yǎng)成寫(xiě)注釋的習(xí)慣呢?我想主要原因應(yīng)該可以歸結(jié)到大多數(shù)員都不寫(xiě)文檔的壞習(xí)慣上來(lái)。員這個(gè)群體大抵都沒(méi)有多少忠君思想,跳槽也是家常便飯,無(wú)論是小白還是大牛,都不可避免地碰到接手別人代碼的情形。從代碼傳承的角度,描述性強(qiáng)的注釋可以起到幫助理解他人代碼、盡快上手修改原有代碼的作用。

人在江湖飄,誰(shuí)能不挨刀,我相信很多人都遭遇過(guò)受困于別人天書(shū)般的代碼望天長(zhǎng)嘆的時(shí)刻,那種無(wú)奈和抓狂實(shí)在刻骨銘心,所以,從利人利己的角度,都希望別人能寫(xiě)注釋,而且寫(xiě)得越詳細(xì)越好,最關(guān)鍵的,一定要和代碼對(duì)應(yīng)起來(lái),不能驢唇不對(duì)馬嘴。

可是,如果代碼本身就可以解釋自己呢?

如果說(shuō),注釋面對(duì)人的世界,代碼直接面向機(jī)器的世界,那么,如果代碼本身既能面對(duì)人又能面對(duì)機(jī)器世界呢?如果注釋充當(dāng)?shù)氖侨?機(jī)器之間的橋梁的話,那么,何不直接讓代碼充當(dāng)這個(gè)橋梁呢?

據(jù)說(shuō)孩子出生的時(shí)候,每對(duì)父母都會(huì)抓耳撓腮,反復(fù)掂量斟酌孩子的起名,過(guò)程之艱不忍描述。而想要寫(xiě)出閱讀性強(qiáng)的代碼來(lái),對(duì)函數(shù)、變量的起名同樣需要操碎了心,函數(shù)什么作用,變量干嘛用的,函數(shù)名稱能涵蓋它實(shí)現(xiàn)的所有作用嗎,相似變量名稱之間的歧義怎么解決,源文件怎么組織,函數(shù)長(zhǎng)度怎么約束,枚舉怎么定義,這些都直接影響代碼的閱讀性。這還僅僅是代碼層面,設(shè)計(jì)方案層面呢?如果模塊化做得不夠好,模塊之間耦合性強(qiáng),改這里影響那里,不寫(xiě)注釋把這些隱患描述出來(lái),怎么能夠保證之后正確修改呢?

所以,不是不可以不寫(xiě)注釋,而是不寫(xiě)注釋,就要孜孜于提高代碼的閱讀性,靠代碼本身解釋自己,這樣實(shí)在是太難了!

可是,誰(shuí)的人生又是輕松愉快的呢?堅(jiān)持貫徹?zé)o注釋主義,就可以破釜沉舟,逼迫自己寫(xiě)出模塊化、結(jié)構(gòu)化、可靈活修改、魯棒性強(qiáng)、閱讀性好的代碼來(lái),正所謂置之死地而后生也!

后記

也許,人本來(lái)就是很難團(tuán)結(jié)的,員這個(gè)群體總是很容易分出多個(gè)陣營(yíng)出來(lái),在寫(xiě)不寫(xiě)注釋上,也是仁者見(jiàn)仁智者見(jiàn)智,筆者只是拋磚引玉,并不代表唯一準(zhǔn)確的觀點(diǎn),科學(xué)自有其客觀規(guī)律,不容觸犯,但同時(shí),科學(xué)的大門異常寬廣,容得你犯下任何錯(cuò)誤。對(duì)于程序員這個(gè)群體,灑家始終懷有尊敬愛(ài)戴的情愫,所以,倘若本文有所冒犯,還請(qǐng)各位兄弟姐妹們見(jiàn)諒。



關(guān)鍵詞: 代碼 注釋 程序

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉