热门标签 | 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,欢迎访问原出处。


推荐阅读
  • SpringMVC RestTemplate的几种请求调用(转)
    SpringMVCRestTemplate的几种请求调用(转),Go语言社区,Golang程序员人脉社 ... [详细]
  • HTML基础入门指南
    本文将深入浅出地介绍HTML的基础知识,包括其定义、开发工具、制定机构、特性、基本标签及更多实用内容。 ... [详细]
  • 远程过程调用(RPC)是一种允许客户端通过网络请求服务器执行特定功能的技术。它简化了分布式系统的交互,使开发者可以像调用本地函数一样调用远程服务,并获得返回结果。本文将深入探讨RPC的工作原理、发展历程及其在现代技术中的应用。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • Python自动化测试入门:Selenium环境搭建
    本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ... [详细]
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • Go语言实现经典排序算法:归并排序
    本文介绍如何使用Go语言实现经典的归并排序算法,探讨其原理、代码实现及性能特点。适合Golang开发者和编程爱好者。 ... [详细]
  • 本文介绍了一个基于 Java SpringMVC 和 SSM 框架的综合系统,涵盖了操作日志记录、文件管理、头像编辑、权限控制、以及多种技术集成如 Shiro、Redis 等,旨在提供一个高效且功能丰富的开发平台。 ... [详细]
  • 程序员如何优雅应对35岁职业转型?这里有深度解析
    本文探讨了程序员在职业生涯中如何通过不断学习和技能提升,优雅地应对35岁左右的职业转型挑战。我们将深入分析当前热门技术趋势,并提供实用的学习路径。 ... [详细]
  • ArcXML:互联网空间数据交换的专用语言
    ArcXML是一种专为ArcIMS平台设计的数据交换协议,基于XML标准,用于在不同组件之间传输和描述地理空间数据。本文将详细介绍ArcXML的背景、用途及其与XML的关系。 ... [详细]
  • 程序员版情书:王思聪的编程式告白
    当程序员用代码表达爱意,会产生怎样的化学反应?一起来看看这封充满技术感的情书,网友笑称这才是真爱! ... [详细]
  • docker镜像重启_docker怎么启动镜像dock ... [详细]
  • 本文详细介绍了如何正确配置Java环境变量PATH,以确保JDK安装完成后能够正常运行。文章不仅涵盖了基本的环境变量设置步骤,还提供了针对不同操作系统下的具体操作指南。 ... [详细]
  • 俗话说得好,“工欲善其事,必先利其器”。这句话不仅强调了工具的重要性,也提醒我们在任何项目开始前,准备合适的工具至关重要。本文将介绍几款C语言编程中常用的工具,帮助初学者更好地选择适合自己学习和工作的编程环境。 ... [详细]
  • 本文探讨如何利用Java反射技术来模拟Webwork框架中的URL解析过程。通过这一实践,读者可以更好地理解Webwork及其后续版本Struts2的工作原理,尤其是它们在MVC架构下的角色。 ... [详细]
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社区 版权所有