程式碼中是否要寫註釋
我的回答:要。
一開始的時候,我並沒有這種疑惑。上學的時候,課本和老師都強調要;聽入門級的視訊也告訴我要;而且自己寫的程式碼就是自己親生的孩子,如果我不寫程式碼,那麼過一段時間,就連親兒子都不認識,似乎十分悲催。
讓我產生疑惑的原因是——因為遇到了不寫註釋的同事,而且經驗比我多,見識也比我豐富。事實上,他程式碼的邏輯、結構都比較清晰。然後,我回想起了,似乎不愛寫註釋的不止一個人。
據說網上流傳有大神說過:“程式碼就是最好的註釋”,“爛程式碼才需要註釋”。其實我很想知道是哪個大神說的。
論“程式碼就是最好的註釋”
認為“程式碼就是最好的註釋”,是因為如果一個底層清晰,邏輯完整、命名規範且完整、架構清晰。那麼程式碼就可以一目瞭然,根本不需要什麼註釋。
首先,要肯定,這樣做肯定能讓我們更看得懂程式碼。想起以前看的XXX果凍廣告:“回家是最好的禮物”。既然是最好的禮物,為什麼還帶XXX果凍回家呢?我的理解是:最好的禮物帶回家,第二好的也可以帶。所以,不要說有最好的東西,其他的就不要了。
我不敢不寫註釋的原因是:我英文不好和我水平不夠。英文不好,註定了我很難望文生義。常見的getUser、getRole 自然沒問題,遇到不常見的,我自然要查字典,總的來說,我做不到一目瞭然,除非很小的程式。當然,讓我寫程式碼時,如果類名或方法名不恰當,好歹有中文註釋作伴。水平不夠,所以,不能保證程式碼不出錯;但是還有兩個不能保證:不保證不出錯、不敢保證沒有註釋的時候就能一目瞭然,即使是自己的程式碼。那麼,還是需要老老實實的寫上程式碼,免得自己看不懂,或者別人看不懂。
如果你英文夠好並且水平很高?那麼你自然可能很有話語權:別人說1+1 = 3 ,我會認為他胡說;你說的話,我會認為是否涉及到我未知的領域。我覺得,我們還是需要有一個認知:專案是需要協作的。能夠讓水平低一些的人也能很快入手你的專案,你是否會更輕鬆?若是遇到一團亂麻的程式碼,有點註釋,是不是更好的?
知識是共享的,團隊需要協作的,更接近通俗易懂的東西,才更容易流傳千古。知識和技能也需要讓更多人懂,才能壯大。
論“爛程式碼才需要註釋”
認為“爛程式碼才需要註釋”的底層思維和“好程式碼不需要註釋”一樣。
北京的路方方正正 = “好程式碼” ;重慶的路彎彎繞繞 = “爛程式碼”。比喻不恰當,對重慶的朋友表示歉意。
可是,北京和重慶的路上,都有指示牌。如果在沒有地圖或者導航的情況下,人們在北京迷路的概率小於重慶。似乎,有導航,在重慶也更容易迷路。北京有沒有,只認為是好路,就沒有指示牌?
我們看看,什麼樣的路沒有指示牌?鄉間小路。為什麼?因為走的人少,幾乎沒有外來人口。
所以……
而且,個人認為,如果認為“爛程式碼才需要註釋”。那麼,自認為自己寫的程式碼是好程式碼,是不合適的——至少不是最好的。
論“有些註釋影響閱讀”
認為註釋影響閱讀的觀念包括幾種:
- 有的人表達能力不行,寫出來的註釋很令人費解。
- 許多人寫的註釋與實際功能不同步。
- 有些註釋無意義。例如:
a = 1 ; // 設a 的值為1
4.註釋中被放了大量暫時不用的程式碼。下一個接收的人,想刪除它,又不敢。
第1點和第3點有些像:註釋對人毫無幫助,甚至囉嗦,但本質上還是有區別的。回想起第一個“hello world!”的時候,我似乎也添加了“列印’hello world!’”的註釋。入門的時候,確實水平不夠,沒有這句註釋,我不能快速的知道這句話的意思。大概,第三點,是高位者,對低位者的鄙夷。
關於第2點,本人的不會出現這個問題。只能說,部分人沒有養成真正的寫註釋習慣。
似乎,寫註釋真的是不友好的?
如果有一個人字跡潦草,不辯牛馬,沒有人能懂,你是不是可以認為手寫的字是不能讓人看懂的?
有的人表達能力不行,你又怎麼能保證它的專案名、空間名稱、類名、物件名、變數名的表達能力就行。短短的一個單詞,就把意思明瞭?
不是註釋影響閱讀,是“有的”註釋影響閱讀。所以,改了就好了。如果是在改不了,那麼,我也沒有任何辦法。
“程式碼是最好的註釋”就不需要寫註釋了嗎?是告訴你,怎樣寫程式碼更容易讀懂。“爛程式碼才需要註釋”?事實上,見到的官方原始碼是有註釋的,而且註釋語言有規律。好的程式碼、好的程式、更需要註釋,因為它是向下相容的,讓更多的人看懂。“有些註釋影響閱讀”,做的不好,可以改進嗎?