我认为这个话题是精心选择的。编写一次可以完成一万件事的Perl行是“很酷的”,但是当您不得不重新访问它时,它很烂。
另一方面,无论是否聪明,都必须记录代码。在业界公认的编程语言和我们人类普遍习惯的高级概念之间存在固有的阻抗失配。自记录代码根本无法实现-直到成为自然语言。即使Prolog代码也需要记录下来,因为无论它有多高级,它还是相当正式的。
细粒度的命令性代码用于实施粗粒度的计划-需要记录在案。当快速的3行路线图注释可用时,我不需要阅读方法的所有50行。
以后的编辑:一个更有说服力的例子是超越计算机的例子。一本书可能写得很好,但是我们经常想在不同的抽象层次上对其进行处理。通常,本书会提供摘要,这就是注释可以为代码提供的内容。当然,经过良好抽象的代码可以为自助文档大有帮助,但不能为您提供所有抽象级别。
当我们需要在正文中解释索赔背后的推理过程时,注释也可以像书中的注解一样发挥作用。
在这种情况下,我发现我先前提到自然语言的陈述超出了评论的需要是不正确的。甚至自然语言(如书中的语言)也可能适合文档使用,以稀疏方式解释文本中体现的抽象,或者提供绕道而不会使主体文本偏离轨道。注意,抽象良好的代码可能已经在自我记录方面大有帮助。
最后但并非最不重要的一点是,注释可以帮助编码人员保持较高的抽象水平。很多时候,我意识到我在步骤列表中包含的两个连续注释并不代表相同的抽象级别,这立即可以使我对我使用该代码所做的事情有个批判性的了解。
某些问题超越了编码,并像其他活动一样影响编码。注释可以帮助您阐明代码的基本原理和方面,而我发现它们是一个令人愉快的伴侣,它会讲一种较柔和的语言,从而使人受益于更改。