Re: [请益] 写注解到底是不是好习惯

楼主: AmosYang (泛用人型编码器)   2018-12-30 17:52:48
先说结论:“二分法命题比较有得战、比较热闹;若像下面这样去考量各种层面的
话,会很无聊 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 。
作者: oneheat (等待)   2018-12-30 17:54:00
你这个太无聊了,应该没几个人会回
作者: t64141 (榕树)   2018-12-30 17:58:00
光第一句就该推了XD看完,再推一次
作者: pttworld (批踢踢世界)   2018-12-30 18:07:00
注解分类是有意义的,讨论串某些推文明显和内文不同类
作者: yougigun   2018-12-30 18:16:00
end
作者: landlord (91)   2018-12-30 18:17:00
言之有物,推!
作者: jaspreme206 (handsssssome)   2018-12-30 18:18:00
作者: nelley (名字:大便王)   2018-12-30 18:51:00
推这篇
作者: v86861062 (数字人:3)   2018-12-30 19:02:00
:)
作者: qrtt1 (有些事,有时候。。。)   2018-12-30 19:47:00
用人体有色色的感觉
作者: babelism (Bob)   2018-12-30 22:35:00
九类注解很值得借鉴,和我的观点重合处甚多
作者: sa074463 (垒包)   2018-12-30 23:00:00
作者: rollr (衛生紙的心情)   2018-12-31 01:39:00
水准太高
作者: Ghamu (猫丸)   2018-12-31 02:11:00
事实上就有好的有不好 应该的 不应该的注解这样但一堆真的都拿烂注解来说该写注解好棒棒 真的不敢恭维
作者: kyrie77 (NTU KI)   2018-12-31 02:53:00
推这篇
作者: freepenguin (浮企鹅)   2018-12-31 11:33:00
作者: Ouranos (å—¨)   2018-12-31 13:40:00
推推~
作者: pttuser2266   2018-12-31 14:13:00
原本很好战的主题,不要打扰我我看戏
作者: ppc ( )   2018-12-31 14:40:00
推个
作者: vn509942 (如履薄冰)   2017-01-01 10:49:00
感谢大大整理分享
作者: agra (一审有罪就下台!)   2017-01-01 14:13:00
这个切分分类视角很不错,有看有推!
作者: polola6212 (Polo)   2017-01-03 01:39:00
这串下来只有这篇有营养........
作者: crow1270 (鸦)   2017-01-03 19:09:00
作者: leicheong (睡魔)   2017-01-04 21:11:00
Warning comments: 当你在用第三方程式库有gotcha例如statement需要特定顺序执行或者有bug而需要workaround, 而说明文件没标示 (例如微软去年公布必须开启SMB1才能正常运作的软件清单... 很多人一直都没想到SMB1居然会被更新停用, 而且没几个人会知道在用的lib的技术细节吧)这些一定得下注解
作者: rocwild (外国死小孩)   2017-01-05 11:41:00
简单说就是看写什么样的注解吧。比如说“问题(problem)”也是一种注解。

Links booklink

Contact Us: admin [ a t ] ucptt.com