还在写代码注释么?你Out了
如果把开发过程比作开车,那么代码的注释就相当于路边的指示牌。注释是辅助的信息,并不影响程序的最终执行结果。
一个好的代码注释会减少开发周期,比如帮助下一个接手的开发人员快速熟悉代码。
不好的代码注释则反过来影响了开发过程,因为可能会误人子弟,指错路。
所以,注释并不总是好事。
曾经有一个实验,就是随机抽取一个软件程序,在里面设置一些BUG,然后让一些小组去查找这些BUG,有趣的是50%的小组都会彻底删除软件中的注释。结果是,不使用注释的小组在更短的时间内发现了更多的BUG。
我们在代码中会碰到各种各样的注释。一些注释仅仅是开发人员即兴之作,一些表名了他们有多聪明!一些仅仅是一个玩笑。
例如:
//当我写这些的时候,只有上帝和我能懂
//现在,仅仅上帝能懂了
//我来为下列代码负责...
//是他们强迫我写的,我不是自愿的
//我要找一个更好的工作
try {
...
}catch(SQLException ex) {
//不用多说了,你很拧巴吧
}catch(Exception ex2) {
//如果你想你已经拧巴过,那么恭喜你,这次更加新鲜
}
写文档性的代码而不是注释!
写文档型的代码要求你定义变量、类、枚举类型等的名字的时候会考虑别人能否看懂,文档型的代码会让其他程序员很好理解。好的文档型的代码和注释的效果是一样的,而且这减少了开发时间(不用花时间维护不知所云的注释了)。
实际上,是不是文档型的代码并不是你说了算,而是别人评价的。
另外,代码的注释即使写的很好,也会很快过期,因为软件的需求变化很快,你很难保证注释一直都是最新的,但是代码肯定是最新的。
解决方法
如果你没有足够的时间维护代码的注释,那么请不要写注释。这样你会更加有效率,你不会浪费时间写没有意义的注释。
写文档型的代码会帮你和你的下任理清思路,那些认为自己没有时间写文档型的代码的认识是绝对错误的。
当你发现一些注释看不懂或者有误的时候,请直接删除。
分享到:
相关推荐
将待清理的 C++源代码 存为纯文本形式“test.txt”,将文本文件copy到CommentCleaner.exe同一个文件夹内,运行 CommentCleaner.exe程序将会在本目录下生成一个“testout.txt”文件,也就是没有注释的源代码。...
给定 C/C++ 源程序的源代码,要求去掉所有的注释代码并输出去除注释后的代码。已知 C/C++ 代码的注释有两种:单行注释和多行注释,前者稳以...输出到当前目录下的 output.out 文件,其内容为去除注释的 C/C++ 源代码。
一个包含详细注释的扫描器C源代码 #include <stdio.h> #include <winsock2.h> #include <time.h> #define iPort 80//目标Web Server端口 .#define szSign "500 13\r\nServer: Microsoft-IIS/5.0"//根据此标志来...
1.版本:matlab2022A,包含仿真操作录像和代码注释,操作录像使用windows media player播放。 2.领域:PID最优参数计算 3.内容:基于PSO粒子群优化的PID控制器最优参数kp,ki,kd计算。仿真输出PSO优化曲线,kp,...
Xilinx的去隔行代码和注释 module deint_v2mult_4L ( rst, // resets input data register and control clk, // video component rate clock, 27Mhz for SDTV Fi, // Low to High signals start of Field One ...
这使您可以在开发树中添加代码,然后在作为压缩包发布之前将其注释掉。 动机 我使用安装在有趣地方的perlbrew和/或perls,我希望能够通过git checkout树运行可执行文件,而无需在每次调用时都调用perl -Ilib 。 ...
第7天 01复习 02方法的调用问题 03判断闰年 04方法概念 05方法练习 06方法的3个练习 07out参数 08使用out参数做登陆 09自己动手写tryparse 10ref参数 11、ref练习 12params可变参数 13、方法的重载 14、方法的递归 ...
The textbook is laid out as a series of small steps that build on each other until, by the time you complete the book, you have laid the foundation for understanding data mining techniques.
在Linux 中软驱的主设备号是2(参见第43 行的注释),次设备号 = type*4 + nr,其中 ! nr 为0-3 分别对应软驱A、B、C 或D;type 是软驱的类型(2??1.2M 或7??1.44M 等)。 ! 因为7*4 + 0 = 28,所以 /dev/PS0 (2,28)...
安卓里面的下拉刷新,有源代码,有注释,有system.out测试...... 很详细的说 重写了 listview 只要使用这个listview就能实现,很傻瓜的说
jsp九大内置对象:pageContext,request,response,out,session,application、exception、config、实例代码讲解,有注释可运行
#include <unistd.h> // *.h 头文件所在的默认目录是include/,则在代码中就不用明确指明位置。 // 如果不是UNIX 的标准头文件,则需要指明所在的目录,并用双引号括住。 // 标准符号常数与类型文件。定义了各种...
201、你在项目中用到了xml技术的哪些方面?如何实现的? 48 202、用jdom解析xml文件时如何解决中文问题?如何解析? 48 203、编程用JAVA解析XML的方式. 49 204、EJB2.0有哪些内容?分别用在什么场合? EJB2.0和EJB1.1的...
.....\.......\a.out.h .....\.......\asm .....\.......\...\io.h .....\.......\...\memory.h .....\.......\...\segment.h .....\.......\...\system.h .....\.......\const.h .....\.......\ctype.h .....
被逼的代码我自己写的还有注释 ackage com.jb.minidvd; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; public class DVDMgr { /** * 创建DVD对象 */ DVDSet dvd =...
201、你在项目中用到了xml技术的哪些方面?如何实现的? 48 202、用jdom解析xml文件时如何解决中文问题?如何解析? 48 203、编程用JAVA解析XML的方式. 49 204、EJB2.0有哪些内容?分别用在什么场合? EJB2.0和EJB1.1的...
4.5 在需要留空的地方放一个空语句或注释,告述读者,你是故意的 12 4.6 不要再对boolean值做true false判断 12 4.7 减少代码嵌套层次 13 4.8 程序职责单一 14 4.9 变量的声明,初始化和被使用尽量放到一起 14 4.10 ...
寄存器和代码的讲解,适合初学者,通俗易懂。
* 由于可能将代码发布到github,代码与示例使用英文注释。 * 注意到示例中远程联接timeout会抛出异常终止服务器,尽管代码中已经添加了错误处理。Node.js的net模块在延时回调中抛出异常(!),代码也不易理解,因此...
如果您双击鼠标打开经过加密的程序块时,您只能看到该程序块的接口数据(即IN, OUT 和 IN/OUT 等类型的参数)和注释信息,而程序块中的代码及代码的注释,临时/静态变量是不能被看到的。同时您也无法对加密保护的...