我所在的公司正在进行一场关于代码中注释有效性的小型辩论。其中一位领导指示开发人员不要使用注释,因为他们觉得注释使用“过时”,而其他几位开发人员则表示他们从不使用注释,因为他们认为这只会使代码变得混乱。
我一直遵循的做法是,在每个文件的顶部使用基本注释块进行注释,并对每个方法/类/等定义进行注释,然后在代码中任何我认为6个月后可能回来并想“WTF”的地方进行注释。
显然,这是主观的,但我很想知道有没有人有什么好的争论或经验,支持一种或另一种方式。
我所在的公司正在进行一场关于代码中注释有效性的小型辩论。其中一位领导指示开发人员不要使用注释,因为他们觉得注释使用“过时”,而其他几位开发人员则表示他们从不使用注释,因为他们认为这只会使代码变得混乱。
我一直遵循的做法是,在每个文件的顶部使用基本注释块进行注释,并对每个方法/类/等定义进行注释,然后在代码中任何我认为6个月后可能回来并想“WTF”的地方进行注释。
显然,这是主观的,但我很想知道有没有人有什么好的争论或经验,支持一种或另一种方式。
我只是想指向Jeff Atwood在这个主题上精彩的文章, 他一针见血地指出了问题。
偶尔我会遇到一些代码,它的分区非常优雅,方法、字段和变量的名称非常明显,从代码中我需要知道的一切都很明显。
一般情况下,只有真正伟大的代码大师才能写出这样的代码。我们其余人都是拼凑出能用的东西。
其中一位主管指示他的开发人员不要使用注释,因为它们太“老套了”,另外几位开发人员表示他们从不使用注释,因为他们认为注释只会使代码变得混乱。
如果我听到与我合作的开发人员说这样的话,我会纠正他们。如果我没有足够的权力来纠正他们,我会离开这份工作。
良好命名和清晰易懂的代码 - 有时称为“自说明”的内容 - 可以很好地说明代码正在做什么。这在某种程度上是可以接受的。注释的作用是解释为什么。
这个话题经常被讨论,但是我对此有一些看法:
注释的问题在于,它们往往会留在被注释的代码已经更改甚至被删除之后。
一般来说,我只会对公共API和难以理解的算法进行注释。
不要使用注释来解释你做了什么 - 这就是代码的作用,使用注释来解释为什么这样做。
Diomidis Spinellis刚为IEEE专栏(在他的博客上引用)撰写了一篇不错的专栏,概述了这个问题以及几种解决方案:
当我们进行评论时,离灾难只有几个按键的距离:用英语重新表述代码的功能。而那时问题就开始了。