
4.1 关于编程规范的讨论
晨落:我先给你看例程4-1片段代码,是“学籍管理软件”大学信息资料维护的片段代码,看完后请你做个评价。
洪杨俊:有两个错别字。
晨落:其他方面呢?请你从代码的规范角度来评价,在你们学校,老师有没有这么演示编程和要求编程?
洪杨俊:没有。
晨落:你能够读懂代码的注释吗?
洪杨俊:嗯。
晨落:那你帮我就注释方面做一些解释。因为在后面的案例中,任何一段示例代码都要严格按照规范进行。
洪杨俊:每段代码都要写注释?
晨落:你觉得呢?你觉得我的这些注释有没有冗余?
洪杨俊:写得清楚一点当然好,我觉得有些地方不用写注释,例如导入包,还有最上面那一段写入程序包的说明里面就行了。不用每个类都写。注释是方便程序员交流的嘛,是程序员当然看得懂啰。
晨落:假如你离开这个公司了,你肯定要将源代码留给公司,我们一定要考虑其他人去维护或者二次开发,对吧?那如果你能够提供一份清晰的设计文档是不是可以节省维护人员的大量时间?如果我给你提供这样的文档你会觉得怎么样?老板,包括你在内,是愿意花更多的时间去理解别人的代码呢,还是用别人的代码直接修改呢?哪个时间成本小呢?
洪杨俊:直接修改。
晨落:例程4-2文档全部是在示例1源代码中生成的。要生成示例2的注释,需要付出很多的劳动力。大概70%的时间是在完成注释和修改注释,30%的时间是在注释完善后编程的。你认为软件开发就是编程,编程就是代码堆积,对注释的理解是可有可无,在你的观念中认为,程序员都是技术高手,能够看懂别人的代码。但是,我告诉你一个道理,设计是一个项目成败的关键,如果没有足够的注释和编程设计,这些项目必败无疑,目前中国的软件公司大部分是这样的。代码没有更多的注释,最终导致项目基本失败,后期维护难度和维护成本很大。
洪杨俊:不是啊,我是觉得注释比代码多,看起来就觉得烦。
晨落:No!请问Java JDK代码少吗?你看一下他们是如何注释的?可以这样说,如果JDK的注释不这么做,JDK早就没有人用了。有不少人就是凭借这JDK的源代码和JDK的帮助文件来学习Java的,他们JDK的注释详细程度比我们想象的要详细多了。我也是从学JDK后才意识到编程中注释的重要性。你打开JDK支持网站,其实就是一大堆帮助文件。这些帮助文件也都是通过注释生成的,我们能够看到的支持和帮助文件基本一样。
洪杨俊:如何做呢?
晨落:本章的主要任务就是介绍编程规范的,我先从阅读例程4-1开始。
[例程4-1] 编码规范演示。




