程序员应该避免的 5 种代码注释

你有没有这样的经历:别人审查过你的代码之后给出的注释,你认为是没有必要的?注释代码是为了提高代码的可读性,目的是为了能让其他人更容易理解你的代码。

我特别讨厌这5种注释类型以及制造它们的程序员。希望你不是其中之一。

1.自以为很了不得的程序员


  1. public class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. string message = "Hello World!"; // 07/24/2010 Bob
  6. Console.WriteLine(message); // 07/24/2010 Bob
  7. message = "I am so proud of this code!"; // 07/24/2010 Bob
  8. Console.WriteLine(message); // 07/24/2010 Bob
  9. }
  10. }

这个程序员自认为写了一段很了不得的代码,所以觉得有必要用自己的名字对每行代码进行标记。实施版本控制系统(VCS)能实现对代码变更的问责,但是也不会这么明显知道谁应对此负责。

2.过时的程序员


  1. public class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. /* This block of code is no longer needed
  6. * because we found out that Y2K was a hoax
  7. * and our systems did not roll over to 1/1/1900 */
  8. //DateTime today = DateTime.Today;
  9. //if (today == new DateTime(1900, 1, 1))
  10. //{
  11. // today = today.AddYears(100);
  12. // string message = "The date has been fixed for Y2K.";
  13. // Console.WriteLine(message);
  14. //}
  15. }
  16. }

如果一段代码已不再使用(即过时),那就删除它——不要浪费时间给这些代码写注释。此外,如果你需要复制这段被删除的代码,别忘了还有版本控制系统,你完全可以从早期的版本中恢复代码。

3.多此一举的程序员


  1. public class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. /* This is a for loop that prints the
  6. * words "I Rule!" to the console screen
  7. * 1 million times, each on its own line. It
  8. * accomplishes this by starting at 0 and
  9. * incrementing by 1. If the value of the
  10. * counter equals 1 million the for loop
  11. * stops executing.*/
  12. for (int i = 0; i < 1000000; i++)
  13. {
  14. Console.WriteLine("I Rule!");
  15. }
  16. }
  17. }

我们都知道基础的编程逻辑是如何工作的——所以你不需要多此一举来解释这些显而易见的工作原理,虽然说你解释得很happy,但这只是在浪费时间和空间。

4.爱讲故事的程序员


  1. public class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. /* I discussed with Jim from Sales over coffee
  6. * at the Starbucks on main street one day and he
  7. * told me that Sales Reps receive commission
  8. * based upon the following structure.
  9. * Friday: 25%
  10. * Wednesday: 15%
  11. * All Other Days: 5%
  12. * Did I mention that I ordered the Caramel Latte with
  13. * a double shot of Espresso?
  14. */
  15. double price = 5.00;
  16. double commissionRate;
  17. double commission;
  18. if (DateTime.Today.DayOfWeek == DayOfWeek.Friday)
  19. {
  20. commissionRate = .25;
  21. }
  22. else if (DateTime.Today.DayOfWeek == DayOfWeek.Wednesday)
  23. {
  24. commissionRate = .15;
  25. }
  26. else
  27. {
  28. commissionRate = .05;
  29. }
  30. commission = price * commissionRate;
  31. }
  32. }

如果你一定要在注释里提及需求,那么不要涉及别人的名字。销售部门的Jim可能会离开公司,而且很有可能大多数程序员根本不知道这是何许人也。不要在注释里提及不相干的事实。

5.“以后再做”的程序员


  1. public class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. //TODO: I need to fix this someday - 07/24/1995 Bob
  6. /* I know this error message is hard coded and
  7. * I am relying on a Contains function, but
  8. * someday I will make this code print a
  9. * meaningful error message and exit gracefully.
  10. * I just don't have the time right now.
  11. */
  12. string message = "An error has occurred";
  13. if(message.Contains("error"))
  14. {
  15. throw new Exception(message);
  16. }
  17. }
  18. }

这种类型的注释包含了上面所有其他类型。如果是在项目的初始开发阶段,这种待做注释是非常有用的,但如果是在几年后的产品代码——那就会出问题了。如果有什么需要修复的,立马解决,不要把它搁置一边,“以后再做”。

如果你也常常犯这样的注释错误,如果你想了解注释的最佳做法,我建议你阅读类似于Steve McConnell写的《Code Complete》这样的好书。本文来自云栖

社区合作伙伴“Linux中国”,原文发布日期:2015-10-02   

时间: 2024-09-20 06:34:31

程序员应该避免的 5 种代码注释的相关文章

UNIX/Linux C 程序员需要掌握的七种武器

我是一名普通的软件工程师,不是什么技术大牛.这篇文章所提到的"七种武器"只是我这些年工作经验的一点体会和感悟,如果有错误的地方,还请大家指正. (一)C语言 作为一名C程序员,熟练掌握C语言是最基本的一项技能.关于如何学好C语言,以及C语言话题的讨论,网上有很多经典的文章,我就不一一列举了.在这里,我只想谈一点我个人的体会:刚毕业时,我来到一家比较大的软件公司工作,而公司的工作模式是每个人只负责一个小模块.这样工作两年后,我自认为我的C语言水平已经很高了.后来,我来到现在这家公司.由于

php程序员应具备的7种能力

 php程序员应具备的7种能力:        一个优秀php程序员应具备什么样的能力,才能更好的完成工作,才会有更好的发展方向呢?下面7种能力希望对您有所帮助.        一,php能力        1,了解阶段,您能写一些代码,因为那是在手册和google的帮助下,您才完成的.变量乱定义,N多函数不知道,做起事来很慢,想到什么写什么,代码写的比较乱,后期维护很麻烦.        2,熟悉阶段,经常查函数,手册估计也看过一,二遍了,常用的函数基本上您都了解了.后期维护给您带来了不少痛苦

十二星座的“程序员”,都是怎么写代码的?

白羊座 怎么可能看到一整段白羊座程序员写的完整代码!他们的电脑里大概存了三万多个文档,都是极其美妙的开头,然后呢?然后就没有然后了!人说金鱼的记忆只有7秒,白羊座程序员对一段新代码的热情大概只有25.7142857条金鱼那么长吧. 金牛座 金牛座程序员写起代码来那真叫一个惜代码如金,清晰,简洁,毫不拖泥带水,没有半句废话.啥?注释?还要啥自行车啊这位同学!写注释多废纸啊! 双子座 双子座程序员自带多套互不干扰.独立运行的代码编写系统,代码编写风格切换起来毫无障碍,单看他心里哪个小人揍趴下了其他小

程序员必知35个jQuery 代码片段_jquery

jQuery如今已经成为Web开发中最流行的JavaScript库,通过jQuery和大量的插件,你可以轻松实现各种绚丽的效果.本文将为你介绍一些jquery实用的技巧,希望可以帮助你更加高效地使用jQuery. 收集的35个 jQuery 小技巧/代码片段,可以帮你快速开发. 1. 禁止右键点击 $(document).ready(function(){ $(document).bind("contextmenu",function(e){ return false; }); });

程序员在加班时间写的代码 bug 骤增

作为一个最底层的程序员 ,我先记录一些只有底层程序员才会知道的事情.如果多年后,我违背自己进入这个行业的初心,走上管理岗位,也能回想起一些禁忌,避免一些错误. 其中最重要的就是这条: 不要相信一个程序员在加班时间写出来的代码 . (软件工程的学说表明,连正常时间好好写的代码,也不要太相信.不过这不是本文的重点,略过不提.) (不懂代码的人,看到本文中的Java代码可以略过,不影响理解.) 创造力的时限 写代码,与写文章.绘画.思考复杂问题,并没有本质上的区别,都是创造性的活动. 每个人的创造力,

又不在状态?来看看程序员保持动力的9种方法

拥有高度积极性对每一个程序员都是非常重要的,然而强大的工作压力往往使程序员身心疲惫.幸运的是,当我们感觉到能量不足的时候总有一些来自他人或是自己的鼓励,使我们能够继续保持动力,满血复活,下面是作为一个程序员保持动力的9种方法. 1.不要让自己过度劳累 工作的同时要记住,你是一个人,而不是一个机器人,无论怎样,你需要休息一段时间.给自己一些安静的时间,避免劳累过度,是达到有动力水平的一个正确的方式.从充足的睡眠开始,有效地管理你的工作量.   努力确定自己的目标,并努力工作,以实现这些目标.还有保

《高效能程序员的修炼》一避免写注释

避免写注释 高效能程序员的修炼如果用很多的注释来"装饰"代码是件好事的话,那么在代码中加入大片大片的注释便是锦上添花了.对吗?事实上并不完全是这样.过犹不及,好心也会办坏事. '************************************************* ' Name: CopyString ' ' Purpose: This routine copies a string from the source ' string (source) to the targ

程序员需知的五种静态代码审查

静态分析的概念已经提出多年,而在过去的几年里利用该工具评估和诊断代码的技术已日趋成熟.几乎每种语言都存在相应的软件审查工具.这些审查可以在多个领域,如数组,循环,编码风格,设计,复制代码,命名风格,性能等领域中隔离出不良代码.而在每一个层级中又存在另一套完整的审查可供程序员使用. 这里要提醒大家,程序员可能会因审查报告过多漏洞而感到厌烦.笔者曾经看到过一个有20万行的应用程序,用现在的标准来衡量,这当然不算多,此外还运行了200+审查.该报告列出了35万个需要修复的违规之处,这样以来的确是有些麻

php程序员应具有的7种能力小结_php文摘

一,php能力  1,了解阶段,您能写一些代码,因为那是在手册和google的帮助下,您才完成的.变量乱定义,N多函数不知道,做起事来很慢,想到什么写什么,代码写的比较乱,后期维护很麻烦.   2,熟悉阶段,经常查函数,手册估计也看过一,二遍了,常用的函数基本上您都了解了.后 期维护给您带来了不少痛苦,您开始发现自己的代码有很多不足,开始思考如果改进自己的代码,如何站在项目的角度来规划自己的代码,而不是想到什么写什么, 知道如何来减少冗余代码,使您的代码清晰,知道什么样的代码写出来让人看着舒服,