热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

程序代码注释的规范与建议

对每一级用统一的方法注释每个代码块,例如:为每个类,包含简短的描述,作者和最后修改日期为每个方法,包含其目的,功能,参数,返回值团队编程时,采用标准的注释是很重要的。当然,采用代码协定和工具(比如c#中的XML和java中的Javadoc)帮助这项工作也是可接受的,甚至更可取。
  1. Comment each level
  2. 对每一级用统一的方法注释每个代码块,例如:

    • 为每个类,包含简短的描述,作者和最后修改日期
    • 为每个方法,包含其目的,功能,参数,返回值

    团队编程时,采用标准的注释是很重要的。当然,采用代码协定和工具(比如c#中的XML和java中的Javadoc)帮助这项工作也是可接受的,甚至更可取。

  3. Use paragraph comments
  4. 将代码块分成多个片段,每个片段执行一个简单的任务,然后在每个片段前添加注释,引导读者即将发生什么。

    // Check that all data records
    // are correct 
    foreach (Record record in records) 
    {
        if (rec.checkStatus()==Status.OK)
        { 
            ......
        } 
    } 
    // Now we begin to perform 
    // transactions 
    Context ctx = new ApplicationContext(); 
    ctx.BeginTransaction();
    ......
    
  5. Align comments in consecutive lines
  6. 对于多行且每行后都紧跟着注释的情况,我们应该排列这些注释,使它们更易读懂。

    const MAX_ITEMS = 10; // maximum number of packets 
    const MASK = 0x1F;    // mask bit TCP
    

    一些开发人员用Tab来排列注释,其他的则用空格。最佳途径还是用空格,因为在各种编辑器和IDE中,tab键的行为多种多样。

  7. Don’t insult the reader’s intelligence
  8. 避免显然的注释,比如:

    if (a == 5)      	// if a equals 5 
    	counter = 0; 	// set the counter to zero
    

    这既浪费时间写不必要的注释,又使读者分心,因为这些细节读者很容易从你的代码中推断出来。

  9. Be polite
  10. 避免粗鲁的注释,比如“Notice the stupid user has entered a negative number,”或“This fixes the side effect produced by the pathetically inept implementation of the initial developer”。此类注释很难在他们的程序代码中得到好的效果,并且你甚至不知道以后谁会读这种注释,你的上司,客户或可怜的愚蠢的新手。

  11. Get to the point
  12. 不要写无关你要传达意思的注释。避免笑话,诗歌和赘言。简而言之,保持注释简洁,直接。

  13. Use a consistent style
  14. 一些人认为注释应该写的让非程序员也能明白,其他人则认为只对程序员即可。无论如何,作为成功的代码注释策略,应该是一致的以及总是面向相同的读者。个人意见,我甚至怀疑很多非程序员是否会读代码,所以注释应面向程序员。

  15. Use special tags for internal use
  16. 团队开发时,采用一致的一套标签作为程序员间的沟通。比如,很多团队使用“TODO:”标签来指出需要附加编写的代码段:

    int Estimate(int x, int y) 
    {
        // TODO: implement the calculations 
        return 0;
    }
    

    标签注释并不解释代码,它们往往寻求注意或传递信息。但是,如果你用这种方法,务必将你要传递的信息写上。

  17. Comment code while writing it
  18. 在编写代码是添加注释,此时它们在你脑中还是清晰的。如果你直到最后才来添加,将事倍功半。“I have no time to comment“,”I’m in a hurry”和“the project is delayed”都是简单的借口而阻止代码中写文档。一些开发人员认为你应该在编写代码前写注释作为一种筹划最终方案的途径。举例:

    public void ProcessOrder() 
    {
        // Make sure the products are available
        // Check that the customer is valid 
        // Send the order to the store 
        // Generate bill 
    }
    
  19. Write comments as if they were for you(in fact,they are)
  20. 注释代码时,不仅仅要考虑其他开发人员以后可能会维护你的代码,也要考虑你自己。 伟大的Phil Haack曾说过:"As soon as a line of code is laid on the screen, you’re in maintenance mode on that piece of code."

    结果,我们自己将是优良(笨拙)注释的第一个受益(害)者。

  21. Update comments when you update the code
  22. 如果注释没有随着代码更新,那样的注释不能保证正确。代码和注释必须同步修改,否则你的注释将使维护你代码的开发人员的工作很难做。特别要注意重构工具自动的更新了你的代码而没有改变你的注释的情况,这也将导致同样的结果。

  23. The golden role of comment:readable code
  24. 程序员的基本功之一:让你的代码为自己说话。尽管一些不喜欢写注释的人怀疑这是程序员们瞎编乱造的,不过事实是自明的代码对于编写更易懂的代码甚至使注释变的不必要有很好的帮助。例如,在我的Fluid Interfaces文章中展示了干净自明的代码可能是这样的:

    Calculator calc = new Calculator();
    calc.Set(0);
    calc.Add(10);
    calc.Multiply(2);
    calc.Subtract(4);
    Console.WriteLine( "Result: {0}", calc.Get() );
    

    在这个例子里,注释是不需要的而且那样做可能会与第4条相违背。为了写出更易读的代码,你可能要考虑使用合适的命名方式(Stringer’s Rules),确保正确的缩排和采用代码样式指南。不遵守这条提示的结果可能是注释看起来象似向糟糕的代码道歉。

  25. Share these tips with your colleagues
  26. 尽管我们在第10条中指出我们自己是怎样立即从优良的注释的受益的,但是这些条款对所有开发人员都有用,尤其是团队开发。因此,请将这些注释条款与你的同事分享,一起写易懂和易维护的代码。

本文地址:http://www.nowamagic.net/librarys/veda/detail/725,欢迎访问原出处。


推荐阅读
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • Python字典推导式及循环列表生成字典方法
    本文介绍了Python中使用字典推导式和循环列表生成字典的方法,包括通过循环列表生成相应的字典,并给出了执行结果。详细讲解了代码实现过程。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了Python版Protobuf的安装和使用方法,包括版本选择、编译配置、示例代码等内容。通过学习本教程,您将了解如何在Python中使用Protobuf进行数据序列化和反序列化操作,以及相关的注意事项和技巧。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • switch语句的一些用法及注意事项
    本文介绍了使用switch语句时的一些用法和注意事项,包括如何实现"fall through"、default语句的作用、在case语句中定义变量时可能出现的问题以及解决方法。同时也提到了C#严格控制switch分支不允许贯穿的规定。通过本文的介绍,读者可以更好地理解和使用switch语句。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • MACElasticsearch安装步骤及验证方法
    本文介绍了MACElasticsearch的安装步骤,包括下载ZIP文件、解压到安装目录、启动服务,并提供了验证启动是否成功的方法。同时,还介绍了安装elasticsearch-head插件的方法,以便于进行查询操作。 ... [详细]
author-avatar
多米音乐_34324431
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有