[心得] 好的註解是解釋為何需要這段 code

作者: alihue (wanda wanda)   2021-03-19 22:35:42
轉自推特
https://twitter.com/BenLesh/status/1372562839475470336?s=20
Add comments about WHY code exists, not what it does.
The code is right there, we know what it does.
註解應該用來解釋這段 code 的背景需求/含意,
而不是把 code 表面上的意思再講一次
ps. 推特內有範例圖
https://i.imgur.com/fNQakeb.jpg
還有 不要盡相信 code 即是註解,
有時給你開 debug mode 你還是不曉得為何要這樣幹
ps. 版上比較少轉貼型文章,試水溫。reddit 蠻流行只貼鏈結的
https://www.reddit.com/r/programming/
作者: cuteSquirrel (松鼠)   2021-03-19 22:40:00
第二張 XD
作者: becca945 (頻果芽子)   2021-03-19 22:53:00
作者: neo5277 (I am an agent of chaos)   2021-03-19 23:17:00
login(para) //login method
作者: clamperni (肥宅牛牛)   2021-03-19 23:24:00
tricky的要吧?
作者: cuteSquirrel (松鼠)   2021-03-19 23:49:00
貓貓可愛
作者: spfy (spfy)   2021-03-19 23:54:00
以前覺得是笑話 真正遇到之後發現我自己才是笑話...兩千多行的遞迴FOR循環 註解寫//循環讀資料 幹你娘
作者: cuteSquirrel (松鼠)   2021-03-19 23:57:00
XDDDDDDDDD
作者: drajan (EasoN)   2021-03-20 00:00:00
認同
作者: chuegou (chuegou)   2021-03-20 00:09:00
#define ZERO 0 //origin
作者: ctrlbreak   2021-03-20 00:10:00
註解都是在罵老闆、表同事
作者: Sixigma (六西格瑪)   2021-03-20 00:34:00
最好的code本身應該要解釋它自己,很多註解很容易寫廢話
作者: cuteSquirrel (松鼠)   2021-03-20 00:36:00
真的 看到self-explanatory code效率高很多
作者: drajan (EasoN)   2021-03-20 00:37:00
Code 只能解釋 what 註解跟文檔可也解釋 why
作者: pikaka (pipipi)   2021-03-20 00:51:00
本文有提到不要盡相信code即是註解 就是因為沒有那麼多最好的code阿XD能在註解多給可能有用的資訊 對後面接手的人都是有幫助的
作者: Sixigma (六西格瑪)   2021-03-20 01:10:00
我同意沒那麼多"最好"的code,但這是可以改進的方向
作者: wawi2 (@@)   2021-03-20 01:22:00
可是一堆人寫的code就是讓人看不懂阿 阿對了 有些人英文不太好 寫了註解也是讓人沒看懂
作者: anandydy529 (AndyAWD)   2021-03-20 02:26:00
//下班前突然來一顆隕石,所以這樣寫才能正常下班
作者: t22251974 (t22251974)   2021-03-20 02:34:00
謝謝分享
作者: VdustR (京)   2021-03-20 04:18:00
code 可以自己解釋在做什麼 註解用來解釋為什麼要這樣做cra 的註解就很棒 https://tinyurl.com/2w6wd9re
作者: jobintan (Robin Artemstein)   2021-03-20 06:52:00
安心しろ!老闆要是刻意挑刺,無論註解解釋的再清楚總是會有意見的。只是清楚的註解讓後面接手能短痛接手,就寫進linked inprofile裏面,當做自己的credit。
作者: aidansky0989 (alta)   2021-03-20 08:14:00
同意,很多code需求都要寫清楚,沒有註解靠通靈
作者: hduek153 (專業打醬油)   2021-03-20 08:50:00
//不知道為什麼加了這行才能動
作者: OrzOGC (洞八達人.拖哨天王)   2021-03-20 08:56:00
對不起 我也這樣寫...QQ
作者: mathrew (Joey)   2021-03-20 09:08:00
//Google到的,我也不知道為什麼
作者: v7q4 ((.)(.)乳劍雙修 -|=>)   2021-03-20 09:45:00
// for test結果那行拿掉就掛了…明明是必要的啊!為何要寫for test....
作者: ssd860505da (JAGER)   2021-03-20 09:55:00
貓咪<3
作者: stupid0319 (徵女友)   2021-03-20 10:21:00
// something to do
作者: superpandal   2021-03-20 10:31:00
有看過解釋來龍去脈很多行但如同沒講的狀況嗎? 個人還是習慣Keep it simple and flexible
作者: leo5916267 (小葉)   2021-03-20 10:45:00
我覺得註解可以寫這程式用在哪裡,比寫他在幹嘛好,程式在幹嘛應該表現在命名上
作者: t19960804 (泥好嗎)   2021-03-20 10:48:00
//shit code
作者: superpandal   2021-03-20 10:53:00
用在哪與在做什麼很容易寫的差不多 命名也要看長度駝峰命名太長會很悲劇 唯一支持_不過已有的系統就沒辦法了 全小寫+下劃線非常清爽 眼球無壓力
作者: bronx0807 (堅持需要練習)   2021-03-20 11:03:00
if {...} // end of if
作者: howard50009 (zxc50009)   2021-03-20 11:17:00
同意,推這篇
作者: lturtsamuel (港都都教授)   2021-03-20 11:42:00
看過最實用註解是 // 千萬別在這函式前 aquire mutex
作者: energyy1104 (Bill Wang)   2021-03-20 11:48:00
//stackoverflow的連結
作者: shibin (喜餅)   2021-03-20 12:07:00
同意,謝分享
作者: SKII588   2021-03-20 12:08:00
需要撇清責任時會寫,某年某月某董要求修改之類的
作者: CarpeDiemAL (CarpeDiemAL)   2021-03-20 12:35:00
// Wtf is this? stubbed.
作者: molopo (mmm)   2021-03-20 12:56:00
//我先走了 剩下交給你了
作者: Csongs (西歌)   2021-03-20 12:57:00
//看不懂 塊陶啊
作者: WaterLengend (Leeeeeeeeooooooo)   2021-03-20 12:59:00
認同
作者: foodordertw (foororderTW)   2021-03-20 13:33:00
// here could be a bug
作者: lee457088   2021-03-20 13:39:00
// Pasted from web. Idk why it works.
作者: Nigger5566 (尼哥56)   2021-03-20 13:58:00
// 幹你老師好想下班
作者: leftless (兩個月倒一次垃圾)   2021-03-20 14:47:00
//SNIS-OOO
作者: cuteSquirrel (松鼠)   2021-03-20 15:03:00
// just workaround
作者: online135 (98分美元宇宙星塵)   2021-03-20 15:51:00
// 垃圾欺負新人的 senior 都去死
作者: WunoW (WunoW)   2021-03-20 16:06:00
樓上怎麼了??
作者: Muscovy (三分熟的鬧鐘)   2021-03-20 16:18:00
我看過想一套, 寫一套, 註解一套, 每套不一樣還分版本.最好玩的是程式跑起來還沒問題...
作者: hamster3933 (hamster)   2021-03-20 16:50:00
作者: online135 (98分美元宇宙星塵)   2021-03-20 17:52:00
沒有我留錯地方了哈哈哈
作者: v7q4 ((.)(.)乳劍雙修 -|=>)   2021-03-20 18:15:00
作者: abc0922001 (中士abc)   2021-03-20 18:47:00
我抱怨需求都是寫在 commit 裡
作者: jobintan (Robin Artemstein)   2021-03-20 19:51:00
哪天幹得不爽,在離職走人前將重要的code全註解掉。(誤BTW,整串的怨念感覺深不見底,之前看過TechLead的影片也許能參考下,網址在此:https://ptt.cc/fXESYx不然去YT搜" anti-patterns techlead"就找得到了。這招註解還狠…
作者: wulouise (在線上!=在電腦前)   2021-03-20 21:37:00
linux kernel有一行程式配五十行註解說不用lock的原因靠腰按錯碰到噓,等等補推補推
作者: jamesho8743 (加拿大好美)   2021-03-20 22:13:00
是不要相信註解即是code吧 code本來就是絕對存在的 code才是真正在run的 註解並不靠譜
作者: jej (晃奶大馬桶)   2021-03-20 23:13:00
// 我在絕情谷底 嗡嗡嗡
作者: marc47 (思樂冰)   2021-03-21 01:06:00
如果你有寫過go的code你就不會這樣說了,光是變數明名跟func動名詞,就可以寫完詳細的說明文件,然後加上func的標記註解及一個README.md就整份文件寫完收工
作者: lturtsamuel (港都都教授)   2021-03-21 01:44:00
我看你是沒看過兩個go channel互相咬住 要寫註解警告接手者不要在一個channel返回前往另一個channel塞值
作者: twonia (東尼。史塔克)   2021-03-21 08:16:00
我覺得適度可以,但多半是大公司內被轉了不知道幾手的Code中間改的人不見得有維護註解,也不是人人都有能力寫好讓人可以理解用途的Code,更該是個相輔相成的東西
作者: azureroki (Roki)   2021-03-21 08:30:00
看過寫//獨立 的...
作者: ketrobo (貓蘿蔔)   2021-03-21 10:15:00
// 不寫不能下班
作者: markbex (馬克杯)   2021-03-21 14:15:00
code只能解釋做了什麼 但無法解釋為什麼這麼做把意圖、Why要寫在註解裡面,常常幫助到的是未來的自己
作者: leolarrel (真.粽子無雙)   2021-03-22 10:33:00
#不知道為什麼不能用//當註解,所以就改成#針對markbex大大的需求,版控summery更加的適合
作者: MoonCode (MoonCode)   2021-03-22 12:13:00
提到golang直接看標準庫https://golang.org/pkg/net/註解寫非常多而且詳細有誰可以只用code表達所有事物的人我只能說你厲害喔
作者: jobintan (Robin Artemstein)   2021-03-22 12:25:00
光看Code不看註解就知道這段Code是作啥,那也很強大。
作者: shooter555 (shooter)   2021-03-22 13:47:00
只看code可以理解他做啥 厲害的不是看得人 是寫的人不相信註解不是因為能不能寫的詳細 是因為通常會忘了維護
作者: jamesho8743 (加拿大好美)   2021-03-22 16:02:00
註解的問題是有可能誤導 有維護性的問題 就算它寫的時候是ok的 但後來code變更時註解是否也同時更新?註解跟code不一樣時還不是得看code
作者: lwecloud (CloudEX)   2021-03-22 16:56:00
//Magic number
作者: pikaka (pipipi)   2021-03-22 19:22:00
樓上提到維護性的問題 code本身也有阿 什麼東西不好好維護都會遇到問題 這種情況有問題的都是人 不是這工具
作者: s0914714 (YA)   2021-03-23 01:08:00
//更多更詳盡程式碼 在Stack Overflowcode是本體 註解是輔助讓code更完善 彼此相輔相成
作者: jamesho8743 (加拿大好美)   2021-03-23 08:31:00
這個所說的維護性問題應該是說一致性問題 code沒有一致性問題 不管寫得再爛 它跟實際上run的是完全一致因為一致性問題 所以註解要隨時維護得跟code一樣
作者: cha122977 (CHA)   2021-03-23 09:04:00
註解麻煩在維護 當然可以說我看code最準哪需要管註解但不一致時你不知道是code寫錯了 還是註解沒更新…
作者: jamesho8743 (加拿大好美)   2021-03-23 20:44:00
這就是註解麻煩的一面 容易誤導 基本上code"不會錯"註解可以無視 code 就是現在run起來的樣子 如果不對不符合需求 就改code註解跟code不一致時 基本上你根本不要管註解 因為註解通常是更新度比不上code 你要做的只是把code run一遍 看看是不是符合預期 在意註解變成它在混淆你所以說為什麼註解最好只解釋架構或者作者的意圖 不要去寫太過細節的東西 因為架構跟意圖通常不容易隨時間而改變 要把註解的其它功能 放在把code寫得清楚易懂上面 清楚易懂的code本身就是一種註解
作者: yyc1217 (somo)   2021-03-23 21:08:00
更多的是覺得自己寫得很好所以不用加註解
作者: b85040312 (萬年newman)   2021-03-23 21:17:00
像我公司都直接不註解的 註解還會被嗆,看 code 就不好
作者: cuteSquirrel (松鼠)   2021-03-24 12:03:00
哈 還有遇過會刪註解的 XDDDDD
作者: shooter555 (shooter)   2021-03-24 13:04:00
註解就是用來//WORKAROUND:XXX //TODO:XXX //FXCK:XXX用來解釋給後面維護的人知道原因 以面被罵 那個廢物前輩寫這什麼鬼扣以免
作者: jamesho8743 (加拿大好美)   2021-03-24 18:19:00
The code is right there, we know what it does. 英語這兩句講得很好 都講完了
作者: mrnegativetw (每天來點負能量)   2021-03-25 18:48:00
// TODO
作者: mmppeegg (我是寂寞的)   2021-03-29 14:30:00
註解好好寫啦 對你自己好不要哪天你回來看你自己的code都看不懂
作者: viper9709 (阿達)   2021-03-29 23:56:00
推樓上
作者: BoXeX (心愛騎士團異端審判騎士)   2021-04-01 15:14:00
你的code功能太簡單才能光靠code表達 常常一些code都是為了某個special case存在的 不靠註解誰知道用意當然也可以靠commit講啦 但對讀的人來說就是麻煩在那邊說好的code不需要註解的 往往只是給自己的懶惰找藉口

Links booklink

Contact Us: admin [ a t ] ucptt.com