Re: [請益] 寫註解到底是不是好習慣
看板Soft_Job (軟體人)作者AmosYang (泛用人型編碼器)時間7年前 (2018/12/30 17:52)推噓21(21推 0噓 11→)留言32則, 24人參與討論串22/24 (看更多)
先說結論:「二分法命題比較有得戰、比較熱鬧;若像下面這樣去考量各種層面的
話,會很無聊 XD 。」
# 從 電腦科學 的角度來看
所謂「寫程式」的「寫」,在抽象意義上即是「表達(express)」 ;每種實用的語
言多半有其強項與短處,也就是方便與不方便的用途。
例如說,用 程式語言 來表達計算(computation)過程 ,尤其是表達給電腦看的計
算指令,通常來說會比用 自然語言 來得方便。
用 自然語言 (配合科學/數學符號) 來描述、解釋問題,尤其是表達給人腦看的脈
絡上下文(context) ,通常來說會比用 程式語言 來得方便。
是故,如果一個問題(problem) 是簡單(simple)到可以從其
計算解決方案(solution)去反推出問題的全貌,那麼,的確用程式語言去描述計算
過程就可以了,也就是「不太需要去寫註解」。
反之,如果一個問題的複雜度高,或其脈絡是難以用程式語言去描述的,那麼,就
可以用自然語言這個更適合的工具,去描述該問題的脈絡,也就是「有寫註解的價
值」。
有興趣的話,可以參考 DSL/GPL 的觀念:
* https://en.wikipedia.org/wiki/Domain-specific_language
* https://en.wikipedia.org/wiki/General-purpose_language
# 從 軟體工程 的角度來看
前面板友 ThxThx 在推文 [1] 裡點出的文章,有更深入完整地探討這個方向。
* http://antirez.com/news/124
* https://www.reddit.com/9m6ahs
Hacker News 上也討論過 antirez 的那篇文。
* https://news.ycombinator.com/item?id=18157047
[1]: https://www.ptt.cc/bbs/Soft_Job/M.1546056944.A.99E.html
以下是對原文的摘要,加上簡略的、我的解讀與看法;作者 antirez 把註解分為
9 大類如下,且主張:「前 6 大類是相對有正面價值的,後 3 大類則有疑慮
。」
> * Function comments
「函式註解」,可以想成「介面(interface), API 」註解。
> * Design comments
設計藍圖、大方向的註解。
> * Why comments
相對於描述「如何(how)」的程式碼 ,解釋「意圖、原因」的註解。
> * Teacher comments
深入解釋「問題的脈絡/領域(domain)」的註解 ,例如,某數學公式的由來
。
> * Checklist comments
列出「提醒/警示」的清單註解 ,例如,幫助後人避免踩中技術細節的地雷。
> * Guide comments
「導讀」註解。
> * Trivial comments
解釋「不言自明」之事的註解;讀這類註解所需要花的精神,不見得比直接讀程式碼
來得少,且不見得能幫助讀者更了解此程式要解決的問題。
> * Debt comments
技術債註解;或許應該以 issue/bug 的方式記錄技術債,而不是藏在程式碼
裡。
> * Backup comments
以 備份 為目的,把舊的程式碼以註解的方式留在程式碼檔案裡。
易言之,不同型式的註解有不同的用途與價值。
# 從 人體工程 的角度來看
相對於 軟體工程 , 人體工程 XD 是更困難的。
真正的問題通常不是技術問題,而是認知、環境、歷史等脈絡上的問題,尤其是那
些「沒有被說出來 / 沒有便利的共同語言去表達」 的東西。
那些東西對輕重緩急的取捨拿捏有極顯著的影響與衝擊,卻又常常是無影無形難以
捕捉、表達、溝通。
(「人體工程」離原主題太遠了,就此打住。)
[編輯補充] 就「人體工程」這個題目,可以參考 qrtt1 寫的這篇:
https://www.ptt.cc/bbs/Soft_Job/M.1546144956.A.439.html
# 結論
扁平化、二分法命題比較有得戰、比較熱鬧;若像上面這樣去考量各種層面、脈絡
的話,會很無聊,很難戰 XD 。
--
個人 雜談、學習、英語、軟體
https://www.facebook.com/tw.yang.30 https://www.facebook.com/30abysses/
https://twitter.com/twy30 http://www.30abysses.com/
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 136.56.102.149
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1546163575.A.4C5.html
推
12/30 17:54,
7年前
, 1F
12/30 17:54, 1F
XD
※ 編輯: AmosYang (136.56.102.149), 12/30/2018 17:57:44
※ 編輯: AmosYang (136.56.102.149), 12/30/2018 17:59:12
推
12/30 17:58,
7年前
, 2F
12/30 17:58, 2F
此串開頭原po在解 天才小釣手 的成就 XD
※ 編輯: AmosYang (136.56.102.149), 12/30/2018 18:05:13
推
12/30 18:02,
7年前
, 3F
12/30 18:02, 3F
→
12/30 18:07,
7年前
, 4F
12/30 18:07, 4F
→
12/30 18:16,
7年前
, 5F
12/30 18:16, 5F
推
12/30 18:17,
7年前
, 6F
12/30 18:17, 6F
推
12/30 18:18,
7年前
, 7F
12/30 18:18, 7F
推
12/30 18:51,
7年前
, 8F
12/30 18:51, 8F
推
12/30 19:02,
7年前
, 9F
12/30 19:02, 9F
[編輯補充] 就「人體工程」這個題目,可以參考 qrtt1 寫的這篇:
https://www.ptt.cc/bbs/Soft_Job/M.1546144956.A.439.html
※ 編輯: AmosYang (136.56.102.149), 12/30/2018 19:18:37
→
12/30 19:47,
7年前
, 10F
12/30 19:47, 10F
推
12/30 22:35,
7年前
, 11F
12/30 22:35, 11F
推
12/30 23:00,
7年前
, 12F
12/30 23:00, 12F
推
12/31 01:39,
7年前
, 13F
12/31 01:39, 13F
推
12/31 02:11,
7年前
, 14F
12/31 02:11, 14F
→
12/31 02:13,
7年前
, 15F
12/31 02:13, 15F
推
12/31 02:53,
7年前
, 16F
12/31 02:53, 16F
推
12/31 11:33,
7年前
, 17F
12/31 11:33, 17F
推
12/31 13:40,
7年前
, 18F
12/31 13:40, 18F
推
12/31 14:13,
7年前
, 19F
12/31 14:13, 19F
推
12/31 14:40,
7年前
, 20F
12/31 14:40, 20F
推
01/01 10:49,
8年前
, 21F
01/01 10:49, 21F
推
01/01 14:13,
8年前
, 22F
01/01 14:13, 22F
推
01/03 01:39,
8年前
, 23F
01/03 01:39, 23F
推
01/03 19:09,
8年前
, 24F
01/03 19:09, 24F
推
01/04 21:11,
8年前
, 25F
01/04 21:11, 25F
→
01/04 21:11,
8年前
, 26F
01/04 21:11, 26F
→
01/04 21:13,
8年前
, 27F
01/04 21:13, 27F
→
01/04 21:14,
8年前
, 28F
01/04 21:14, 28F
→
01/04 21:15,
8年前
, 29F
01/04 21:15, 29F
→
01/04 21:16,
8年前
, 30F
01/04 21:16, 30F
→
01/05 11:41,
8年前
, 31F
01/05 11:41, 31F
→
01/05 11:41,
8年前
, 32F
01/05 11:41, 32F
討論串 (同標題文章)
Soft_Job 近期熱門文章
PTT職涯區 即時熱門文章