代码注释如何从1940年代演变到2020年

但是它们并没有以任何方式发展。 从最初的编程语言到今天,对代码的注释只是静态文本(有一些例外,我将在后面讨论)。

图片

好吧,您还可以改进或提出什么建议? 让我们来思考这个主题-是否可以以某种方式改善我们与如此重要但经常被忽略的编程方面(例如代码文档或简单注释)进行交互的经验。

首先,将有两个段落专门讨论本文标题。 是的,因为确实没有这个发展故事,所以您可以称其为挑衅性标题。 一个小小的免责声明:我的知识仅限于(仅限于经验)这些语言:广泛的经验:TS,JS,Rust,中型:PHP,C ++,小型:Go,Java。

因此,我们所拥有的就是:一个被遗弃且有故障的JSDoc,最终死于TypeScript时代,顺便说一下,还有许多被遗弃且有故障的TSDoc。 对于PHP,有PHPDoc,当我用这种语言编写代码时,它的用处不大。 我承认我在C ++方面的经验最少,因此我从未听说过类似的东西,并且在Google中找到的CppDoc不会引起任何遗憾。 一如既往,在这方面最发达的是Rust。 它具有出色的RustDoc系统,但是不幸的是,它并不总是符合人体工程学,并且IDE仍然支持不佳。

因此,总体情况相当可悲,并且代码的注释基础从编程历史的开始就没有改变。 有条件的Plancalcule中的注释与90年前的注释相同,就像Apollo 11月球模块计算机的汇编代码中一样。

图片
(来自shopify.com的照片)

故事结束了。 现在,注释只是静态文本又有什么问题呢? 静态文本不是完美的,并且可以改进吗? 他们发明了一些超文本和HTML,Internet就是这样。 但是谁需要这一切? 手动键入URL有何困难? 千禧一代很懒。

当然是讽刺。 但是,超文本与代码注释有什么关系? 让我们考虑一下超文本解决了哪些问题,使用代码注释时是否有类似的问题?

因此,超文本将静态文本转换为带有超链接的文本。 了解其好处的最简单方法是阅读Wikipedia文章。 例如,关于大型强子对撞机 。 开始阅读本文后,大多数人如果不错过物理课程,就会了解什么是质子和离子。 但是随后出现“强子”一词。 它是什么?读者如何找到它? 如果它是静态文本,那么除了在某个地方(在库中找到?)之外,别无选择,它指出了Hadron是什么。 但是,谢天谢地,事实并非如此,我们可以单击“超链接”。

让我们想想,编程中是否存在这种情况? 成千上万的。 要查找示例,请访问几乎所有开放的存储库,例如Linux内核。 我进入了第一个文件

/** * irq_cpu_rmap_notify - callback for IRQ subsystem when IRQ affinity updated * @notify: struct irq_affinity_notify passed by irq/manage.c * @mask: cpu mask for new SMP affinity * * This is executed in workqueue context. */ static void irq_cpu_rmap_notify(/*   */) { /*   */ } 


因此,想象一下您最近加入了该项目,突然间出现了问题。 回溯会导致此功能,但您对此一无所知。 你该怎么办 没错-使用您所需要了解的所有内容-代码本身并对其进行注释。 一般而言,人工文本比代码本身更容易理解,对吗? 因此,我们首先阅读评论。 然后,我们的情绪下降到了最低点。

什么样的IRQ? 你不知道那是什么。 下一步是什么? 联系并分散更多有经验的同事? 您当然可以,但不是真的想要。 还是他们在度假。 通过代码搜索? 您会发现成千上万的缩写词引用,这会让您沮丧。 好吧,比方说,您翻阅了一半的代码,并且似乎找到了此IRQ含义的解释。 但是,也有一种解释是另一个缩写IRQ,它的含义完全不同! 好吧,最后一种情况很少见,但仍然如此。

但是,如果您奇迹般地单击了IRQ一词,您的IDE会将您带到该缩写的定义位置吗? 那太好了吧? 而且,很简单,它并不比超文本复杂。 那么,为什么在2020年程序员自己不会制作这样的工具? 我将同时强调胶囊和粗体的前一句话。 这对我来说是一个很大的谜。 也许其他IDE也有这种情况,但是我没有为VSCode找到任何东西。 因此,我自己做了这个扩展 。 我邀请您进行测试并发表您的意见。

但是,让我们继续。

在阅读上面的代码片段或评论时,几乎每个单词都会出现问题。 例如,此irq_affinity_notify结构位于何处? 还是为什么在2020年我无法单击irq / manage.c以便IDE忠实快速地将我转移到该文件? 这对我来说也是一个很大的谜。 因此,在我的扩展程序中,第一个已经解决,但是到目前为止仅适用于JavaScript和TypeScript(以下简称:C / C ++,Rust,Java,Go),第二个不那么重要的问题也将得到解决,但稍后。

我不想一堆文字让您感到厌烦,所以只需插入gif并添加更多工作示例:

habr1.gif

我非常害怕批评和恶意评论,但我想进一步了解您对此的看法?

Source: https://habr.com/ru/post/zh-CN485162/


All Articles