你是否有过复查程序时发现有些注释毫无用处?程序注释是为了提高代码的可读性,为了让原作者以外的其他开发人员更容易理解这段程序。
我把这些让人郁闷的注释方式归为了五类,同时把写出这些注释的程序员也归为了五类。我希望读了这篇文章后你感觉自己不属于其中的任何一种类型。如果你有兴趣的话可以读一下另外一篇文章五种程序员(英文),和这篇讲到的五种程序员对比一下。
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(《代码大全》)。这是一本我建议程序员必读的书籍,CSDN
地址http://blog.csdn.net/justjavac/article/details/7865418。
你是否在自己的代码中看到了其它类型多余或扰人的注释?请不吝分享。
扩展阅读:十大注释技巧教你如何书写容易阅读的代码
分享到:
相关推荐
以下是需要避免的五种程序注释方式: 1. **高傲的程序员**:这类程序员会在每行代码后面加上自己的名字,如`// 07/24/2010 Bob`,这不仅显得多余,而且无法提供实质性信息。版本控制系统如Git能够追踪代码更改记录...
在KUKA机器人的自动化应用中,程序注释是一个至关重要的环节,它有助于理解程序逻辑,提高代码可读性,方便后期的维护和调试。KUKA机器人的编程语言是KUKA Robot Language (KRL),它允许用户通过特定的方式来添加...
### 程序注释规则详解 #### 一、引言 在软件开发过程中,良好的编程习惯对于提高代码质量和维护性至关重要。其中,程序注释是编程习惯的重要组成部分,它不仅能帮助其他开发者更快地理解代码逻辑,还能在一定程度上...
你是否曾在检查代码时碰到一条在你看来多余的注释?在代码中使用注释的目的是提升代码的可读性,以让那些非原始代码开发者能更好地理解它们。 我甄别出5类让我不胜其扰的注释及5类生成它们的程序员。我希望读过...
总的来说,C类语言源代码注释去除程序 V1.0绿色版是一个方便的开发辅助工具,能够为程序员提供一个快速、便捷的方式,去除代码中的注释部分,提高代码的整洁度和可读性。在使用过程中,结合良好的代码管理习惯,可以...
本项目名为“java经典去注释程序”,专门针对Java代码中的三种主要注释类型——行内注释(//)、块注释(/* */)和Javadoc注释(/** */)进行清除。 这个程序采用了枚举(enum)数据类型,这是Java中一种特殊的数据...
良好的编程习惯,如使用恰当的注释、避免未初始化的变量、理解编译器警告,以及使用调试工具,都能帮助你写出更健壮的代码。 总而言之,《C语言程序实例大全》是学习C语言的理想资源。它不仅包含了大量的实例代码,...
Java提供了三种主要的注释方式,分别是单行注释、多行注释和文档注释。 1. **单行注释**: 单行注释是最常用的注释方式,通常用于快速插入简洁的解释或说明。在Java中,你可以使用"//"来开启一个单行注释,从这两个...
在实际操作中,如果已经有现成的工具,比如`quzhushi.exe`和`quchuzhushi`这两个文件,它们可能是专门用于去除注释的程序。使用这些工具时,只需要将待处理的C++源代码文件作为输入,它们会自动处理并输出去除了注释...
同时,注释应与代码同步更新,避免出现“僵尸注释”,即注释内容与实际代码不符的情况。 在实际操作中,我们可以利用各种工具来检查代码注释率。例如,"代码注释率工具"可能是用于自动化分析代码中注释比例的软件。...
总的来说,"c源程序注释删除工具.zip"为程序员提供了一种高效且方便的方式,来管理和清理他们的C语言源代码。它简化了日常工作,提升了效率,同时也关注到了数据安全与隐私保护,是编程工作中的一款实用工具。
"C++完美演泽程序注释版"是一个专门为C++初学者和进阶者设计的学习资源,它包含了丰富的C++源码程序,并且每个程序都带有详尽的注释,旨在帮助读者理解并掌握C++的核心概念和技术。 首先,让我们深入探讨C++的一些...
本压缩包中的"Java程序设计案例包含注释"是学习Java编程的重要资源,它涵盖了Java的基础知识,包括基本语法、面向对象概念、字符串处理以及异常处理等方面。下面将对这些知识点进行详细的阐述。 1. **Java基本语法*...
本资料“物联网通信_ZigBee的程序注释”旨在帮助初学者深入理解ZigBee通信的底层工作原理和程序设计思路。 首先,让我们了解ZigBee的基本概念。ZigBee基于IEEE 802.15.4标准,主要设计用于自动化控制和远程监控应用...
在现代的Java开发中,尤其是基于ORM框架如Hibernate的应用开发,实体类注释已经成为了一种更加灵活、高效且易于维护的配置方式。 ### Hibernate实体类注释详解 #### 1. 基本概念 在Hibernate中,实体类是用于映射...
这个名为"ClearMark软件注释清理工具.exe"的程序显然具备了处理这三种语言注释的能力,并且允许用户自定义清理规则,这意味着它可能可以扩展到其他语言,或者处理特定格式的注释,比如XML注释、特殊标记等。...
Doxygen是一个广泛使用的文档生成工具,特别是在C和C++程序中,因为它可以...文档的存在不仅是程序代码的补充,更是一种有效的知识共享方式,特别是对于新加入项目的开发者来说,文档提供了快速学习和理解项目的机会。
因此,一个完整的注释消除程序需要考虑这些情况,避免错误地移除有效代码。例如,程序需要区分"/*"是否在字符串内,以免误删字符串内的内容。此外,对于多行注释,程序必须跟踪结束符"*/",确保在正确的位置结束注释...
这种方式适用于对代码块或长段文字的注释,但要注意避免在注释中嵌套其他注释,因为这可能导致解析问题。 3. **文档注释**:以`/**`开始,`*/`结束,用于生成Javadoc。这是一种特殊的多行注释,用于生成API文档,...
在实际编写过程中,程序员还需要考虑性能优化,比如使用合适的数据结构和算法,以及避免不必要的计算。此外,良好的代码结构和风格也是提升代码可读性和可维护性的关键。 总结,编写俄罗斯方块程序是一次有趣的编程...