1. 為什么程序員都不喜歡寫注釋?

        共 1662字,需瀏覽 4分鐘

         ·

        2022-07-31 06:01

        大家好,我是啊粥。

        今天我們來聊一下關(guān)于代碼注釋的問題,開始閱讀正文之前,你先想 3 個(gè)問題:

        1. 你平時(shí)寫代碼的時(shí)候會(huì)寫注釋嘛?

        2. 你的注釋是怎么樣寫的,主要都表達(dá)些什么?

        3. 你一般會(huì)在什么樣的代碼里寫注釋?

        好了,我們正文開始。

        首先,我個(gè)人剛開始寫代碼的時(shí)候,非常喜歡寫注釋,我一般會(huì)把代碼思路先用文字表述出來。然后分成 1 2 3 4 每一步要干什么,怎么干。

        然后寫完之后開始在每個(gè)步驟下邊填代碼,這個(gè)時(shí)期我的代碼注釋量是非常高的。

        但是后來隨著技術(shù)熟練程度的提高,以及代碼水平的提高,我的注釋量就逐漸減少了。

        并不是我覺得自己牛逼了不用寫代碼了,也不是我想專門給后人挖坑,純粹是我覺得不太有必要了。

        因?yàn)橐环矫嫖艺J(rèn)為當(dāng)你可以寫出相對(duì)比較好的代碼的時(shí)候,你的代碼就是你的注釋,你的命名、你的日志以及你的單元測(cè)試等等所有東西會(huì)共同構(gòu)建成你的完整注釋,最終他們合在一起形成的注釋遠(yuǎn)比你一字一句寫出來的注釋要更清楚更實(shí)用。

        并不是只有 // 后寫的才叫注釋。

        通常來說,我們?nèi)ラ喿x理解一段代碼,一般我們會(huì)有下面三種訴求:

        1. 這代碼是用來解決什么的問題的?

        2. 怎么使用這段代碼,有沒有什么注意事項(xiàng)?

        3. 這個(gè)代碼的實(shí)現(xiàn)細(xì)節(jié)是什么,它是如何運(yùn)作的?

        對(duì)于第一點(diǎn)來說,Why 是很重要的,但我們需要知道,【代碼注釋通常來說都是微觀的,不是宏觀的】。

        對(duì)于宏觀的東西都會(huì)寫在需求和設(shè)計(jì)文檔中,那些微觀的 Why 如果能寫成注釋確實(shí)是挺好的,因?yàn)榇a再簡單再易讀也不會(huì)告訴你 Why,這一點(diǎn)上我還是非常認(rèn)同的。

        但同理,這個(gè) Why 寫成日志好像也是可以的,比如:“正在解決 XXX 問題...”,你想想是不是這么個(gè)道理?

        對(duì)于第二點(diǎn)來說,怎么使用這個(gè)函數(shù),這個(gè)類,有沒有什么注意事項(xiàng)。

        其實(shí),我們需要的可能是一些示例,最好是可以直接拷貝復(fù)制后改一改就可以用的示例,畢竟大家都知道寫代碼的意義就在于是粘貼復(fù)制 。

        但是呢,這些示例完全可以寫成 Unit Test 單元測(cè)試案例,Positive 的案例告訴我們正常應(yīng)該怎么用,Negtive 的案例告訴我們有哪些注意事項(xiàng),不要這么用

        這比單純的代碼注釋要強(qiáng)數(shù)百倍,不是嗎?

        難不成跟具體的例子比,你更喜歡看一段話,告訴你:“請(qǐng)不要 XXX 使用這個(gè)函數(shù)”?

        對(duì)于第三點(diǎn)來說,你要搞清楚代碼是怎么運(yùn)作的,我們每個(gè)寫代碼的人都知道,注釋對(duì)于你搞清代碼是怎么運(yùn)作的幾乎是沒有什么幫助的。

        最好的方式就是打一些斷點(diǎn),然后 Debug 一下代碼,看代碼運(yùn)行時(shí)的那些 Context(變量里的值,狀態(tài),條件,執(zhí)行路徑等)是什么樣的?

        這時(shí),注釋是低效的,把這些上下文打在 Debug log 里輸出才是最高效的。

        生產(chǎn)環(huán)境可以選擇關(guān)掉 Info 或 Debug 級(jí)別的日志,然后開發(fā)的時(shí)候這些日志其實(shí)比注釋可能還好用(如果 Context 輸出比較全,且有規(guī)范)。

        同時(shí)日志開關(guān)是自如的,完全可以由我們自己來進(jìn)行控制,當(dāng)你遇到 Bug 需要調(diào)試的時(shí)候你打開豐富的 Debug ,之后你可以再把他調(diào) Info 或者 Error。

        我相信以上觀點(diǎn)可能很多人是不認(rèn)同的,但是我說真的,作為初學(xué)者你肯定會(huì)有一個(gè)需要大量注釋的階段,主要是因?yàn)槟憬?jīng)驗(yàn)還比較缺乏,所謂沒有達(dá)到熟能生巧的地步。

        但時(shí),當(dāng)你寫代碼寫的足夠久了之后,你會(huì)發(fā)現(xiàn)寫得好的代碼是自注釋的,代碼既注釋,而重要的地方才寫注釋,其實(shí)就是日志 ……

        當(dāng)然,還有一種情況我是建議寫注釋的,那就是二筆產(chǎn)品非要提一個(gè)不合理的需求導(dǎo)致你有一個(gè)不合理的寫法,這個(gè)時(shí)候我希望你能注明“不是我要這么寫的,是產(chǎn)品需求要求這樣的,我也沒辦法的”的無奈,免得下一任接受你代碼的人罵娘,說你是個(gè)菜雞。

        好了,今天的內(nèi)容就到這里了。


        你也可以留言分享你寫注釋的一些經(jīng)驗(yàn)給到我們。


        我是啊粥,關(guān)注我,我們一起向上生長。


        瀏覽 71
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 午夜福利一区二区区三区四区五 | 无码一区二区三区三 | 国产3级在线 | 中文字幕熟女人妻av一区二区三区 | 韩国毛片一区二区三区 |