`
找不着北
  • 浏览: 315249 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

千万要避免的五种程序注释方式

 
阅读更多

你是否有过复查程序时发现有些注释毫无用处?程序注释是为了提高代码的可读性,为了让原作者以外的其他开发人员更容易理解这段程序。

我把这些让人郁闷的注释方式归为了五类,同时把写出这些注释的程序员也归为了五类。我希望读了这篇文章后你感觉自己不属于其中的任何一种类型。如果你有兴趣的话可以读一下另外一篇文章 五种程序员(英文) ,和这篇讲到的五种程序员对比一下。

 

1. 高傲的程序员

public class Program
{
    static void Main( string [ ] args)
    {
        string message = “Hello World!” ;  // 07/24/2010 Bob
        Console.WriteLine ( message) ; // 07/24/2010 Bob
        message = “I am so proud of this code!” ; // 07/24/2010 Bob
        Console.WriteLine ( message) ; // 07/24/2010 Bob
    }
}

这种程序员是如此的欣赏自己的程序,以至于不得不在每行代码上都署上自己的大名。应该让版本控制系统来提供程序变更的信息,他这样做一眼看去并不能说明谁对这行代码负责。

2. 过时的程序员

public class Program
{
    static void Main( string [ ] args)
    {
        /* 这段程序已经不再有用
         * 因为我们发现千年虫问题只是一场虚惊
         * 我们的系统不会恢复到1/1/1900 */

        //DateTime today = DateTime.Today;
        //if (today == new DateTime(1900, 1, 1))
        //{
        //    today = today.AddYears(100);
        //    string message = “The date has been fixed for Y2K.”;
        //    Console.WriteLine(message);
        //}
    }
}

如果一段程序不再有用(比如废弃了),那就删了它吧——不要被几行没用的注释搞的程序混乱不堪。即使你可能以后重用这段代码,你也可以使用版本控制系统,用它把你的程序恢复到以前的样子。

3. 天真的程序员

public class Program
{
    static void Main( string [ ] args)
    {
        /* 这个程序是用来在屏幕上
         * 循环打印1百万次”I Rule!”
         * 每次输出一行。循环计数
         * 从0开始,每次加1。
         * 当计数器等于1百万时,
         * 循环就会停止运行*/

        for ( int i = 0 ; i < 1000000 ; i++ )
        {
            Console.WriteLine ( “I Rule!” ) ;
        }
    }
}

基本的编程语法规则我们大家都知道——我们不需要“编程入门”。你不需要浪费时间来解释一个显而易见的东西,我们更希望知道的是你的程序功能——那是浪费空间了。

4. 传奇的程序员

public class Program
{
    static void Main( string [ ] args)
    {
       /* 有一天我在大街上的一家星巴克里
        * 和销售部的Jim讨论问题,他告诉我
        * 销售代表是依据以下的比例提取佣金的。
        * 周五: 25%
        * 周三: 15%
        * 其它日期: 5%
        * 我是否告诉你过我点了一个卡拉梅
        * 铁咖啡和两份的Espresso?
       */

        double price = 5.00 ;
        double commissionRate;
        double commission;
        if ( DateTime.Today .DayOfWeek == DayOfWeek.Friday )
        {
            commissionRate = .25;
        }
        else if ( DateTime.Today .DayOfWeek == DayOfWeek.Wednesday )
        {
            commissionRate = .15;
        }
        else
        {
            commissionRate = .05;
        }
        commission = price * commissionRate;
    }
}

如果你不得不在注释里写明需求,那也不要提到人名。销售员Jim很可能在公司里不再是销售。而且大多数读到这段注释的程序员未必都知道Jim是谁。你描述的是实际情况但跟我们的内容不相干,所以就省掉吧。

5. 未来程序员

public class Program
{
    static void Main( string [ ] args)
    {
       //TODO: 将来我会修复这个问题 – 07/24/1995 Bob
       /* 我知道这个问题很难解决而且
        * 我现在依赖于这个Contains函数,但
        * 我以后会用一种更有意义,更
        * 优雅的方式打印这段代码。
        * 我只是现在没时间。
       */

       string message = “An error has occurred” ;
       if ( message.Contains ( “error” ) )
       {
           throw new Exception( message) ;
       }
    }
}

这种注释是一种集大成者,它包含了上面所说的注释的所有问题。TODO注释在一个项目最初的开发阶段是非常有用的,但这个注释看起来是在好几年前的产品程序里的——它证明了程序有问题。如果程序有问题需要解决,马上解决,不要拖到日后再解决。

如果你写过这样的注释,或者是你正在寻找一种最好的注释方案,我推荐你读一读Steve McConnell写的Code Complete 这本书。这是我推荐给所有程序员必读的六本书中的一种。或者你可以学学如何停止注释你的程序(英文) 。

你是否在你的程序里还见到过其它种没有意义的或讨厌的注释?欢迎共享。

 

 

来自:外刊IT评论

 

:)

分享到:
评论
23 楼 smallboby 2010-08-20  
aoliwen521 写道
内容有点意思。可是不是原创,我以前看过。

csdn首页早就有。。
22 楼 kimmking 2010-08-20  
iaimstar 写道
kiwi 写道
我写注释都是方法前
/**
* 功能描述:这个方法是做什么的
*   逻辑判断:step1:判断a
*            step2:判断b
*
*   modify 2010-08-20 author 增加判断 step3:判断c
*/

方法中也有相应的 step注释。

/**
*@参数
*@参数的性质
*@返回值
*@描述
*/
足够了。写那么多逻辑干吗

我的意见是

写什么都可以。写多少都可以。

如何功能简单,不写也成。


21 楼 iaimstar 2010-08-20  
kiwi 写道
我写注释都是方法前
/**
* 功能描述:这个方法是做什么的
*   逻辑判断:step1:判断a
*            step2:判断b
*
*   modify 2010-08-20 author 增加判断 step3:判断c
*/

方法中也有相应的 step注释。

/**
*@参数
*@参数的性质
*@返回值
*@描述
*/
足够了。写那么多逻辑干吗
20 楼 liyun_1981 2010-08-20  
楼主,我对你只有一句话说,I服了you了!
19 楼 kimmking 2010-08-20  
NanguoCoffee 写道
衡量代码好坏其实就一种方式:是否感觉得爽。
感觉不爽,那就是有问题。同样适用于注释。


考虑代码的注释
1、可能是给别人看的,也可以是给自己看的,
所以,任何的相关思维碎片都可以写

2、参照office批注,我觉得这个是以后代码注释的一个发展方向,
特别是在多人合作的团队里。
留下的修改和思考历程,都是可以记录,以后再详细说明的。
18 楼 NanguoCoffee 2010-08-20  
衡量代码好坏其实就一种方式:是否感觉得爽。
感觉不爽,那就是有问题。同样适用于注释。

17 楼 aoliwen521 2010-08-20  
je的风格不是原创吗?
炒旧饭和转载应该是投隐藏啊。
16 楼 wuliupo 2010-08-20  
此贴必火!
编程中我也经常犯这些错误,学习了

select*from爱 写道
当年在在一个神奇的系统 ibatis配置xml看到的一段注释
/**
*这是一段很长的sql语句
*由于语句太长,你可能看不懂,请参照本人写的数字驱动 com.......java
*如果到现在还看不动,请打电话问川,TEL:13xxxxxxxxx
*如果川无法搞定,或电话无法接通,请加本人qq.....
*
*/
select ... from .......

15 楼 kimmking 2010-08-20  
我靠,je  bug

我明明点的是隐藏,结果跑到精华上去了。

---------

个人观点,天马行空的注释也比没有注释的好。
14 楼 Crusader 2010-08-20  
select*from爱 写道
当年在在一个神奇的系统 ibatis配置xml看到的一段注释
/**
*这是一段很长的sql语句
*由于语句太长,你可能看不懂,请参照本人写的数字驱动 com.......java
*如果到现在还看不动,请打电话问川,TEL:13xxxxxxxxx
*如果川无法搞定,或电话无法接通,请加本人qq.....
*
*/
select ... from .......


呵呵,注释的逻辑比程序复杂...
13 楼 aoliwen521 2010-08-20  
内容有点意思。可是不是原创,我以前看过。
12 楼 lpp333 2010-08-20  
关注~!大家都来晒晒代码注释吧~!
11 楼 kiwi 2010-08-20  
我写注释都是方法前
/**
* 功能描述:这个方法是做什么的
*   逻辑判断:step1:判断a
*            step2:判断b
*
*   modify 2010-08-20 author 增加判断 step3:判断c
*/

方法中也有相应的 step注释。


请高手指正
10 楼 soci 2010-08-20  
select*from爱 写道
当年在在一个神奇的系统 ibatis配置xml看到的一段注释
/**
*这是一段很长的sql语句
*由于语句太长,你可能看不懂,请参照本人写的数字驱动 com.......java
*如果到现在还看不动,请打电话问川,TEL:13xxxxxxxxx
*如果川无法搞定,或电话无法接通,请加本人qq.....
*
*/
select ... from .......

排这个
9 楼 Ashfrog 2010-08-20  
真是有点意思···
8 楼 刘梦龙 2010-08-20  
哈哈哈,牛人哪!
7 楼 yangguo 2010-08-20  
抛出异常的爱 写道
我非常想让楼主去作回脑残小测试.....

+1. 意思是加上你。
6 楼 Hedgehog 2010-08-20  
那什么才是提高代码的可读性的注解方式呢?谁有给出一段码子看看。。
5 楼 luoyahu 2010-08-20  
有注释总比没有注释要好.黑压压的一堆代码.看了就怕.
比如一:至少你知道这行代码是谁写的.有问题你知道去找谁.
4 楼 smallboby 2010-08-20  
这几种,一般人都不会写。。。

相关推荐

    千万要避免的五种程序注释方式小结

    以下是需要避免的五种程序注释方式: 1. **高傲的程序员**:这类程序员会在每行代码后面加上自己的名字,如`// 07/24/2010 Bob`,这不仅显得多余,而且无法提供实质性信息。版本控制系统如Git能够追踪代码更改记录...

    KUKA机器人程序注释.pdf

    在KUKA机器人的自动化应用中,程序注释是一个至关重要的环节,它有助于理解程序逻辑,提高代码可读性,方便后期的维护和调试。KUKA机器人的编程语言是KUKA Robot Language (KRL),它允许用户通过特定的方式来添加...

    程序注释规则

    ### 程序注释规则详解 #### 一、引言 在软件开发过程中,良好的编程习惯对于提高代码质量和维护性至关重要。其中,程序注释是编程习惯的重要组成部分,它不仅能帮助其他开发者更快地理解代码逻辑,还能在一定程度上...

    请避免五种程序注释方式

    你是否曾在检查代码时碰到一条在你看来多余的注释?在代码中使用注释的目的是提升代码的可读性,以让那些非原始代码开发者能更好地理解它们。  我甄别出5类让我不胜其扰的注释及5类生成它们的程序员。我希望读过...

    C类语言源代码注释去除程序 V1.0绿色

    总的来说,C类语言源代码注释去除程序 V1.0绿色版是一个方便的开发辅助工具,能够为程序员提供一个快速、便捷的方式,去除代码中的注释部分,提高代码的整洁度和可读性。在使用过程中,结合良好的代码管理习惯,可以...

    java经典去注释程序

    本项目名为“java经典去注释程序”,专门针对Java代码中的三种主要注释类型——行内注释(//)、块注释(/* */)和Javadoc注释(/** */)进行清除。 这个程序采用了枚举(enum)数据类型,这是Java中一种特殊的数据...

    c语言程序实例大全(有目录,有注释)

    良好的编程习惯,如使用恰当的注释、避免未初始化的变量、理解编译器警告,以及使用调试工具,都能帮助你写出更健壮的代码。 总而言之,《C语言程序实例大全》是学习C语言的理想资源。它不仅包含了大量的实例代码,...

    Java程序的注释.pdf

    Java提供了三种主要的注释方式,分别是单行注释、多行注释和文档注释。 1. **单行注释**: 单行注释是最常用的注释方式,通常用于快速插入简洁的解释或说明。在Java中,你可以使用"//"来开启一个单行注释,从这两个...

    去除注释 去注释

    在实际操作中,如果已经有现成的工具,比如`quzhushi.exe`和`quchuzhushi`这两个文件,它们可能是专门用于去除注释的程序。使用这些工具时,只需要将待处理的C++源代码文件作为输入,它们会自动处理并输出去除了注释...

    代码注释率,有效解决程序健壮性的问题

    同时,注释应与代码同步更新,避免出现“僵尸注释”,即注释内容与实际代码不符的情况。 在实际操作中,我们可以利用各种工具来检查代码注释率。例如,"代码注释率工具"可能是用于自动化分析代码中注释比例的软件。...

    c源程序注释删除工具.zip

    总的来说,"c源程序注释删除工具.zip"为程序员提供了一种高效且方便的方式,来管理和清理他们的C语言源代码。它简化了日常工作,提升了效率,同时也关注到了数据安全与隐私保护,是编程工作中的一款实用工具。

    c++完美演泽程序注释版

    "C++完美演泽程序注释版"是一个专门为C++初学者和进阶者设计的学习资源,它包含了丰富的C++源码程序,并且每个程序都带有详尽的注释,旨在帮助读者理解并掌握C++的核心概念和技术。 首先,让我们深入探讨C++的一些...

    Java程序设计案例包含注释

    本压缩包中的"Java程序设计案例包含注释"是学习Java编程的重要资源,它涵盖了Java的基础知识,包括基本语法、面向对象概念、字符串处理以及异常处理等方面。下面将对这些知识点进行详细的阐述。 1. **Java基本语法*...

    物联网通信_ZigBee的程序注释

    本资料“物联网通信_ZigBee的程序注释”旨在帮助初学者深入理解ZigBee通信的底层工作原理和程序设计思路。 首先,让我们了解ZigBee的基本概念。ZigBee基于IEEE 802.15.4标准,主要设计用于自动化控制和远程监控应用...

    实体类注释避免配置xml文件

    在现代的Java开发中,尤其是基于ORM框架如Hibernate的应用开发,实体类注释已经成为了一种更加灵活、高效且易于维护的配置方式。 ### Hibernate实体类注释详解 #### 1. 基本概念 在Hibernate中,实体类是用于映射...

    各种开发语言注释清理工具

    这个名为"ClearMark软件注释清理工具.exe"的程序显然具备了处理这三种语言注释的能力,并且允许用户自定义清理规则,这意味着它可能可以扩展到其他语言,或者处理特定格式的注释,比如XML注释、特殊标记等。...

    利用Doxygen给C程序生成注释文档.pdf

    Doxygen是一个广泛使用的文档生成工具,特别是在C和C++程序中,因为它可以...文档的存在不仅是程序代码的补充,更是一种有效的知识共享方式,特别是对于新加入项目的开发者来说,文档提供了快速学习和理解项目的机会。

    c/c++ 代码注释消除程序

    因此,一个完整的注释消除程序需要考虑这些情况,避免错误地移除有效代码。例如,程序需要区分"/*"是否在字符串内,以免误删字符串内的内容。此外,对于多行注释,程序必须跟踪结束符"*/",确保在正确的位置结束注释...

    JAVA程序设计课件-注释.pptx

    这种方式适用于对代码块或长段文字的注释,但要注意避免在注释中嵌套其他注释,因为这可能导致解析问题。 3. **文档注释**:以`/**`开始,`*/`结束,用于生成Javadoc。这是一种特殊的多行注释,用于生成API文档,...

    自己写的俄罗斯方块程序有注释

    在实际编写过程中,程序员还需要考虑性能优化,比如使用合适的数据结构和算法,以及避免不必要的计算。此外,良好的代码结构和风格也是提升代码可读性和可维护性的关键。 总结,编写俄罗斯方块程序是一次有趣的编程...

Global site tag (gtag.js) - Google Analytics