`
vipcowrie
  • 浏览: 350996 次
  • 性别: Icon_minigender_1
  • 来自: 南京
博客专栏
1167aa84-228b-38f8-88a0-4733613efdef
让Java跑起来
浏览量:64374
文章分类
社区版块
存档分类
最新评论

还在写代码注释么?你Out了

阅读更多
还在写代码注释么?你Out了

如果把开发过程比作开车,那么代码的注释就相当于路边的指示牌。注释是辅助的信息,并不影响程序的最终执行结果。

一个好的代码注释会减少开发周期,比如帮助下一个接手的开发人员快速熟悉代码。

不好的代码注释则反过来影响了开发过程,因为可能会误人子弟,指错路。

所以,注释并不总是好事。

曾经有一个实验,就是随机抽取一个软件程序,在里面设置一些BUG,然后让一些小组去查找这些BUG,有趣的是50%的小组都会彻底删除软件中的注释。结果是,不使用注释的小组在更短的时间内发现了更多的BUG。


我们在代码中会碰到各种各样的注释。一些注释仅仅是开发人员即兴之作,一些表名了他们有多聪明!一些仅仅是一个玩笑。

例如:

//当我写这些的时候,只有上帝和我能懂
//现在,仅仅上帝能懂了

//我来为下列代码负责...
//是他们强迫我写的,我不是自愿的

//我要找一个更好的工作

try {
...
}catch(SQLException ex) {
  //不用多说了,你很拧巴吧
}catch(Exception ex2) {
  //如果你想你已经拧巴过,那么恭喜你,这次更加新鲜
}



写文档性的代码而不是注释!

写文档型的代码要求你定义变量、类、枚举类型等的名字的时候会考虑别人能否看懂,文档型的代码会让其他程序员很好理解。好的文档型的代码和注释的效果是一样的,而且这减少了开发时间(不用花时间维护不知所云的注释了)。

实际上,是不是文档型的代码并不是你说了算,而是别人评价的。

另外,代码的注释即使写的很好,也会很快过期,因为软件的需求变化很快,你很难保证注释一直都是最新的,但是代码肯定是最新的。

解决方法

如果你没有足够的时间维护代码的注释,那么请不要写注释。这样你会更加有效率,你不会浪费时间写没有意义的注释。

写文档型的代码会帮你和你的下任理清思路,那些认为自己没有时间写文档型的代码的认识是绝对错误的。

当你发现一些注释看不懂或者有误的时候,请直接删除。
0
0
分享到:
评论
2 楼 七孑bit 2012-06-16  
没意义的话
1 楼 来这里学java 2012-06-16  

相关推荐

    源代码注释清理器(清除C++源码中的所有注释内容,简单易用)

    将待清理的 C++源代码 存为纯文本形式“test.txt”,将文本文件copy到CommentCleaner.exe同一个文件夹内,运行 CommentCleaner.exe程序将会在本目录下生成一个“testout.txt”文件,也就是没有注释的源代码。...

    原程序注释

    给定 C/C++ 源程序的源代码,要求去掉所有的注释代码并输出去除注释后的代码。已知 C/C++ 代码的注释有两种:单行注释和多行注释,前者稳以...输出到当前目录下的 output.out 文件,其内容为去除注释的 C/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"//根据此标志来...

    基于PSO粒子群优化的PID最优参数计算matlab仿真,包含仿真操作录像,代码注释

    1.版本:matlab2022A,包含仿真操作录像和代码注释,操作录像使用windows media player播放。 2.领域:PID最优参数计算 3.内容:基于PSO粒子群优化的PID控制器最优参数kp,ki,kd计算。仿真输出PSO优化曲线,kp,...

    Xilinx的去隔行代码和注释

    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 ...

    Dist-Zilla-Plugin-CommentOut:注释掉脚本和模块中的代码

    这使您可以在开发树中添加代码,然后在作为压缩包发布之前将其注释掉。 动机 我使用安装在有趣地方的perlbrew和/或perls,我希望能够通过git checkout树运行可执行文件,而无需在每次调用时都调用perl -Ilib 。 ...

    C#入门——面向对象等,代码+注释

    第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-0.11 [内核源代码带中文注释]

    在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九大内置对象实例代码学习,可运行,有注释

    jsp九大内置对象:pageContext,request,response,out,session,application、exception、config、实例代码讲解,有注释可运行

    linux内核 0.11版本源码 带中文注释

    #include <unistd.h> // *.h 头文件所在的默认目录是include/,则在代码中就不用明确指明位置。 // 如果不是UNIX 的标准头文件,则需要指明所在的目录,并用双引号括住。 // 标准符号常数与类型文件。定义了各种...

    java面试宝典

    201、你在项目中用到了xml技术的哪些方面?如何实现的? 48 202、用jdom解析xml文件时如何解决中文问题?如何解析? 48 203、编程用JAVA解析XML的方式. 49 204、EJB2.0有哪些内容?分别用在什么场合? EJB2.0和EJB1.1的...

    带中文注释的 linux 0.11 源代码

    .....\.......\a.out.h .....\.......\asm .....\.......\...\io.h .....\.......\...\memory.h .....\.......\...\segment.h .....\.......\...\system.h .....\.......\const.h .....\.......\ctype.h .....

    ACCP6.0 java 迷你DVD

    被逼的代码我自己写的还有注释 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的...

    java代码规范详细版

    4.5 在需要留空的地方放一个空语句或注释,告述读者,你是故意的 12 4.6 不要再对boolean值做true false判断 12 4.7 减少代码嵌套层次 13 4.8 程序职责单一 14 4.9 变量的声明,初始化和被使用尽量放到一起 14 4.10 ...

    Zigbee时钟设置

    寄存器和代码的讲解,适合初学者,通俗易懂。

    我改进的Node.js的Connect框架与示例程序

    * 由于可能将代码发布到github,代码与示例使用英文注释。 * 注意到示例中远程联接timeout会抛出异常终止服务器,尽管代码中已经添加了错误处理。Node.js的net模块在延时回调中抛出异常(!),代码也不易理解,因此...

    程序块的加密保护

    如果您双击鼠标打开经过加密的程序块时,您只能看到该程序块的接口数据(即IN, OUT 和 IN/OUT 等类型的参数)和注释信息,而程序块中的代码及代码的注释,临时/静态变量是不能被看到的。同时您也无法对加密保护的...

Global site tag (gtag.js) - Google Analytics