在这一章中,我们将要介绍一些Java的基础语法,比如,Java的命名规则,Java的数据类型,如何定义一个变量,以及Java的运算符等等。虽然这些都是比较简单的内容,本章还是值得学习一下,毕竟是“磨刀不误砍柴工”。
注释,也就是给代码加上一段说明性文字以帮助我们理解程序实现的功能,注释的存在并不会影响程序的执行。在Java中,一共有三种注释方式:单行注释,多行注释以及文档注释。
首先看单行注释,Java中的单行注释是来源于C++的,它以双斜杠“//”开头,知道该行的末尾。这种风格的注释方式因为书写比较容易,使用起来也比较方便,因此使用的频率是非常高的,一般,当我相对代码中的某一两行进行注释时,我通常会使用这种单行注释。下面就是一个单行注释的例子。
// 双斜杠之后的内容是单行注释。
int i = 10; //单行注释也可以放在一条语句的后面
接着再看多行注释,多行注释比单行注释的历史要悠久的多,这种风格继承于C语言,当然C++中也包含这种多行注释。多行注释以“/*”开始,直到“*/”为止,在这其中的内容是属于注释,并且注释内容可以跨行。在C语言中只有这一种注释方式,不管我们是否只想注释一行代码,都必须将注释放置于“/*”与“*/”之中,我记得当初学习C语言时,这是让我感觉比较痛苦的一点。下面我给出了一个多行注释的例子:
/* 这个注释方式
可以跨越多行
我确定一定以及肯定
这些注释
不会影响代码的执行
*/
在使用多行注释时,需要注意,多行注释并不支持嵌套,看下面的例子。
/* 注释之中,又嵌套了下面
/*这个注释*/
可是
这是错误的*/
第三种注释方式要特殊一点,因为它的作用不仅仅是用于注释代码,它其实还背负了一个更重要的使命——为程序产生文档。一个好的软件,不仅仅是有强大的功能,清晰的结构,还有一点不能忽视的是需要提供一份完整的文档。对于程序员来说,在编写代码文档时,最大的问题就是当代码改变时,如何改变文档。如果文档和代码是分离的,那么每次修改代码时,还需要在另外一个地方修改代码,这会成为一件比较痛苦的事情。而如果我们将文档能和代码放在一起时,就会发现,当我们一旦修改了代码,我们可以就近修改文档,这样对于程序员来说,工作会变得轻松很多(不管怎么说,写文档都不是一件轻松的事情。J)。文档注释和多行注释很像,只不过文档注释是以“/**”开头(是两颗星),以“*/”结尾。下面是一个文档注释的例子。
/**
* 这是一个文档注释的例子,
* 注释的内容同样也能跨越多行,
* 在每行的开头,我加了一个*,这不是必须的
* 但是,这样可以显得更美观。
*/
public static void main(String[] args) {
}
上面这个例子中,我定义了main方法的文档。这只是产生Java文档的第一步,等到我们的程序完成之后,需要向用户提交文档时,我们可以使用JDK提供的javadoc命令以产生程序文档,关于javadoc的使用,可以参照附录的内容,在这里我就不罗嗦了。
注释的基本用法我们就介绍到这里,虽然文档注释中还有许多值得关注的地方,不过我不打算再花更多的时间讲解它们。接下来,我们再来看看如何对待注释。在这里给出三个对注释的态度,你会倾向于选择哪个?
1) 在程序中不写或者很少写注释。
2) 在程序中尽可能详细的将注释写下来。
3) 在程序中有选择地写注释,对于复杂的代码添加注释,对于简单的代码不使用注释。
如果你选择了第3个选项,那需要恭喜你了,至少你已经有了一个好的开始(虽然也许从骨子里你更偏向于选1)。现在我需要花一点篇幅来分别对这三个选项做一些讨论。
首先看看选项1,在现实生活中,自觉或者不自觉的持有这个观点的人是非常多的,对于初学者,在代码中不写注释非常普遍,我听过他们中的有些人对此的辩解有“当时全部精力都放在代码上,根本没空写注释。”,“我写程序都跌跌撞撞的,还谈什么写注释。”,我们先姑且认可这些人的理由;可是我也碰到过很多有多年经验的程序员也没有写注释的习惯,这就让人觉得不安了。就我的看法,注释是程序中不可或缺的一个环节,它最大的作用就是帮助我们记住自己曾经做过的工作,帮助同伴理解自己的代码。在一个有一定规模的代码中,如果没有注释,或者注释属于稀有物种的时候,那这段代码就有危险了,这种代码的可读性将会随着代码以及时间的延续而急剧降低。准备维护这段代码的程序员可以从这些代码中闻到煤气的味道,也许一个小火苗就可以让他深陷火海。
接着再看看选项2,这个观点也能引起不少人的赞同——我曾经就支持这一观点。支持这一观点的人通常有如下理由:既然注释可以帮助我们理解程序,可以帮助我们记录自己的想法,那么将代码中的注释写的详细一些,将会提高程序的可读性以及可维护性。这个理由看上去不错,可是他是否成立呢?这一观点实际上是对观点1的全盘否定,这让我想起两句成语:“矫枉过正”和“过犹不及”。事实上在代码中加入太多的注释不但不会提高可读性,反而会极大的降低可读性,可以想象一下,在一个充满了 // 和 /* */的源程序中查找间杂在其中的代码将会是一种怎样可怕的情形。
现在就剩下选项3了,这个观点体现了儒家“中庸”的思想。根据敏捷编程的观点,代码就是最好的文档,结构清晰的代码对于提高代码可读性是非常重要的,在此基础之上,我们对重要的方法或者比较深奥的代码添加必要的注释,这样可以充分发挥注释的优势,并保持代码的整洁。
最后做个总结陈词。注释是个双刃剑,适当的使用可以提高程序的可维护性,而过度的使用注释将会对代码造成非常大的危害。