在之前的一些关于代码评论的文章中,我发现你不需要的评论是最好的评论。不要急于批评,让我解释一下。首先,代码尽量简洁,尽量不依赖注解就能看懂。我们唯一需要添加注释的是真正不容易理解的代码。有一本很经典的书,叫做《Structure and Interpretation of Computer Programs》(《电脑程序的结构和编译》),初版于1985年,在序言中表达了它的观点:程序一定要让我们读起来容易,只是附带的让机器执行它。Knuth在他1984年发表的经典论文《文学编程》(《文学编程》)中也持有类似的观点:我们应该改变传统的思维方式,程序不再是告诉计算机做什么的指令,而是向人类描述如何做让计算机用文字做事,而编程就像写文章。文学节目主要关注展示精致的风格。程序员应该像作家一样,慎重选择变量名,解释每个变量的含义,力求写出人脑容易理解的程序。如果你写的代码能够被其他程序员看懂,并且能够编译成功,那么需要加注释的地方肯定不会很多。下面是一个使用注释作为辅助的代表性示例:此代码取自一个已使用多年的闭源系统。float_x=abs(x-deviceInfo->position.x)/scale;intdirectionCode;if(0<_x&x!=deviceInfo->position.x){if(0>x-deviceInfo->position.x){directionCode=0x04/*left*/;}elseif(0position.x){directionCode=0x02/*right*/;}}上面的代码和下面的代码是等价的,但是下面的代码更具可读性。staticconstintDIRECTIONCODE_RIGHT=0x02;staticconstintDIRECTIONCODE_LEFT=0x04;staticconstintDIRECTIONCODE_NONE=0x00;intoldX=deviceInfo->position.x;intdirectionCode=(x>oldX)?DIRECTIONCODE_RIGHT:(x>oldX)?DIRECTIONCODE_LEFT:DIREC需要多加注意不代表代码更容易理解。当然,这与本案无关。上面的注释——如果你注意到的话——会使代码更加混乱。有时,代码的可读性越高,注释就越简洁。特别是如果您必须改用其他符号名称。虽然我们可以无限地重构和简化代码以避免繁琐的评论,但我们表达思维过程的方式是有限的。无论您提供的代码多么简洁明了,代码都不能完全自文档化。但是代码永远无法覆盖注释的存在。正如JefRaskin所说:[代码]没有解释为什么程序是这样写的,为什么选择那样。我们也看不出有理由从[代码]中选择一些替代方案。例如:/*对于感兴趣的数据集,二分搜索的结果低于Boyer-Moore算法,因此我们使用了更复杂但更快的方法,尽管这个问题起初似乎不适合字符串搜索技术。所以我们在写注释的时候也要考虑到这一点:下面的你可能比较清楚$string=join('',reverse(split('',$string)));反转字符串,但是如何将其插入#ReversethestringPerl文件?确实,一点都不难。归根结底,代码只会告诉您程序如何工作,而注释会解释其工作原理。所以,下次写代码的时候,不妨在这两方面给同事做个榜样。翻译链接:http://www.codeceo.com/article/code-and-comment.html英文原文:CodeTellsYouHow,CommentsTellYouWhy