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

还在写代码注释么?你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  

相关推荐

    DBN代码注释

    "DBN代码注释" 深度学习(Deep Learning)是一种机器学习方法,近年来获得了非常广泛的应用。DBN(Deep Belief Network,深度信念网络)是深度学习中的一种重要模型。下面将详细解释DBN代码的注释。 DBN类的定义 ...

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

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

    yolov5-6.1版本的中文代码注释,注释写的很全,有需要的可以下载使用

    代码注释中会详细解释每个关键部分的作用,比如`model.py`中定义的模型结构,`utils.py`中的各种实用函数,包括IOU计算、数据加载、模型保存和加载等。`train.py`文件包含了训练脚本,其中包含了训练过程的完整逻辑...

    原程序注释

    给定 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"//根据此标志来...

    DBN代码注释.doc

    文档"DBN代码注释.doc"涉及到的主要知识点是深度信念网络(Deep Belief Network, DBN)的实现,这是一种用于无监督学习和特征学习的神经网络架构。以下是对代码的详细解析: 首先,DBN是一个Java类,包含了多个成员...

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

    Java代码统计实现

    在Java编程领域,有时我们需要了解一个项目或代码库的代码质量,这通常涉及到对代码行数的统计。本文将深入探讨如何实现一个Java代码统计工具,该工具可以计算正常代码行数、空白行数、注释行数以及总行数,并能以...

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

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

    DS1302实时时钟芯片控制代码verilog,代码注释全面

    实时时钟操作实时时钟,英文全称为Real_Time Clock,简称RTC,是一种计时器,能对年、月、日、时、分、秒进行准确的计时。我们的开发板上安装了一款由美国...//--0//read,1//写reg StartFlag;//--开始信号reg [7:0] Cmd

    Timer累计计时器,利用系统时间计时 含代码注释

    本教程将详细介绍如何使用Timer进行累计计时,并提供带有代码注释的示例。 一、Timer的基本概念 Timer是编程语言中的一个类或接口,它能够按照设定的时间间隔触发事件。在不同的编程语言中,Timer的实现方式可能会...

    Swift教程:函数篇 In-Out参数

    Swift是一种强大的、面向对象的编程语言,由Apple开发并用于构建iOS、macOS、watchOS以及tvOS的应用程序。...在编写涉及In-Out参数的函数时,务必清晰地注释其作用和使用方法,以帮助其他开发者理解和使用你的代码。

    用Qt写的生成csv的程序,使用方法在文件的注释里

    在描述中提到的“使用方法在文件的注释里”,意味着源代码包含了如何运行和使用这个程序的说明。这些注释可能包括如何提供输入数据,如何调用程序生成CSV,以及任何特定的命令行参数或配置选项。 此外,标签中提到...

    C# ref和out的区别

    - **清晰的文档注释**:为使用`ref`和`out`的方法添加清晰的文档注释,帮助其他开发者理解方法的行为和预期。 综上所述,`ref`和`out`关键字在C#中的使用提供了灵活的方式来处理参数传递,特别是在需要直接操作外部...

    WaveOutDemo - 带注释版

    通过阅读和理解这个注释版的代码,开发者不仅可以学习如何使用WaveOut接口进行音频播放,还可以了解如何结合网络编程实现音频流的接收和播放,这对于开发音频应用或者游戏中的音频系统非常有帮助。同时,注释也会...

    真接写屏的直线的注释写法

    以提供的文件`boot2.asm`为例,这可能是一个引导扇区的代码,它可能包含直接写屏的代码,用于在计算机启动时显示信息。在x86架构下,我们可能会用到像`MOV`指令来设置内存中的字符,`OUT`指令来发送数据到显存或者...

    socket 通信详细注释的入门实例

    在这个入门实例中,我们将详细解析服务器端和客户端的Java代码,了解如何使用Socket进行通信。 首先,我们看服务器端的代码: ```java public class Server { public static int port = 8989; public static ...

    VC注释的快捷键设置.docx

    5. 在右侧的列表中找到“CommentOut”宏,这正是用于注释代码的宏。 6. 将“CommentOut”宏拖曳到工具栏上,这样你就可以通过点击此按钮来执行注释操作了。 第二种方法是设定注释快捷键,这对于习惯使用键盘的...

    怎么样写好安全代码

    注释在程序开发中扮演着重要角色,它不仅可以帮助其他开发者理解代码的逻辑,还有助于未来对代码的维护和升级。有效的注释应当: 1. **行注释**:用于简短地说明单行代码的作用。 2. **块注释**:适用于对较大段落...

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

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

Global site tag (gtag.js) - Google Analytics