Re: [請益] 寫註解到底是不是好習慣

作者: babelism (Bob)   2018-12-28 22:55:13
先說結論:註解必須寫,除非 code 太過簡單。
我不相信有「看得懂的命名」這東西。
哪怕是我現在全部寫中文,發到網路上,
只要字數多到一個程度,就會有一堆人看不懂中文表達的意思。
更不用說是程式碼。
連命名都看不懂,就更要花大量的時間去釐清整個 code 的邏輯才看得懂「寫什麼」。
看懂寫什麼之後,更重要的是看懂「為什麼」這樣寫。
而註解,就是一個省下看得懂「寫什麼」跟「為什麼」時間的好東西。
然而,會議跟文件是碼農最大的敵人,
在某種程度上,註解也是。
所以註解,在精不在多,在關鍵不在詳細。
註解和 code 是完全相依的,
如果註解既繁且雜沒重點,那基本上 code 是垃圾的可能性很高。
善於寫 code 的人,要鍛練自己寫註解的能力。
最好別人不用去 trace code,只要看一遍註解,就可以接手。
所以好的註解,可以引導別人的思路,就跟寫小說一樣。
---
這就又回到如何寫 code 的命題,這裡舉個例,
每個人習慣不一樣,所以姑且參考。
我個人很喜歡 if,但非常討厭 else。
if 是可控的,else 不可控,思慮再慎密的人,都會敗在 else。
透過許多可控的 if,邏輯一脈相承,註解寫起來就非常輕鬆,
只要解釋為什麼我要用這些 if,跟這些 if 在做什麼事。
也許 if 太多很難看,把許多 if 精簡後變成短短幾行看起來非常炫,
但對於要理解 code 的人來說,反而是要在大腦裡把這短短幾行,
拆開並還原成所有的 if 條件,再去逐一理解--浪費時間又容易錯。
把 if 歸納成 function 之後,對我來說沒有什麼功能是三個 block 無法說明的。
// if ..., do ...
case -> if -> handling
畫成 block diagram 就是一個唬弄客戶跟長官的好東西。
好吧這是題外話XD
也許寫完這個功能要數百行 code,但註解可能就十幾行。
解釋一下「寫什麼」(do) 跟「為什麼」(if) 就好。
如果註解寫成這樣
code .... code ... code ... // comment
在一行 code 後面還要註解這行在幹什麼,基本上就是一種失敗,
因為這表示別人連這一行 code 都得靠註解才看得懂。
失敗的不是註解,是 code 寫太爛。
作者: Astar5566 (一顆星5566)   2018-12-28 23:04:00
doxygen大法好看開源專案少之又少的註解真的是種磨練
作者: Ghamu (貓丸)   2018-12-29 04:44:00
我覺得我的code是越寫越簡單 拆分越來越細 不太懂你說除非程式碼很簡單是什麼意思 工程師不是本來就應該要寫簡單好懂的程式碼嗎? 簡單應該是常態 複雜是非常泰吧?
作者: RapidGrowth (Jasper)   2018-12-29 08:25:00
其實還是有else, 只是被當default case, 我認為這樣還是不嚴謹的
作者: philip80220 (花)   2018-12-29 12:00:00
作者: RapidGrowth (Jasper)   2018-12-29 13:15:00
沒有看前篇文章就回了我的看法跟前篇文章是比較相似的。前篇他那種寫法只是視覺上難看,其實邏輯上是比較清晰的,非常嚴謹,真的產品要夠stable的話,這些是避不掉的。雖然我覺得有可以深層套嵌的寫法,但並不是簡單的不處理else分支。更正:有可以避開深層套嵌的寫法
作者: kyrie77 (NTU KI)   2018-12-29 20:36:00
推這篇
作者: rofellosx (鏖)   2017-01-02 08:36:00
我比較討厭各家語言簡潔if寫法..

Links booklink

Contact Us: admin [ a t ] ucptt.com