服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

java 编程规范

1. 应用范围

本规范应用于采用j2ee规范的项目中,所有项目中的java代码(含jspservletjavabeanejb)均应遵守这个规范。同时,也可作为其它项目的参考。

 

2. 设计类和方法

2.1     创建具有很强内聚力的类

方法的重要性往往比类的重要性更容易理解,方法是指执行一个统一函数的一段代码。类常被错误的视为是一个仅仅用于存放方法的容器。有些开发人员甚至把这种思路作了进一步的发挥,将他们的所有方法放入单个类之中。

之所以不能正确的认识类的功能,原因之一是类的实现实际上并不影响程序的执行。当一个工程被编译时,如果所有方法都放在单个类中或者放在几十个类中,这没有任何关系。虽然类的数量对代码的执行并无太大的影响,但是当创建便于调试和维护的代码时,类的数量有时会带来很大的影响。

类应该用来将相关的方法组织在一起。

当类包含一组紧密关联的方法时,该类可以说具有强大的内聚力。当类包含许多互不相关的方法时,该类便具有较弱的内聚力。应该努力创建内聚力比较强的类。

大多数工程都包含许多并不十分适合与其他方法组合在一起的方法。在这种情况下,可以为这些不合群的方法创建一个综合性收容类。

创建类时,应知道模块化这个术语的含义是什么。类的基本目的是创建相当独立的程序单元。

2.2     创建松散连接和高度专用的方法

1.       使所有方法都执行专门的任务

每个方法都应执行一项特定的任务,它应出色的完成这项任务。应避免创建执行许多不同任务的方法。

创建专用方法有许多好处。首先调试将变得更加容易。

 

2.       尽量使方法成为自成一体的独立方法

当一个方法依赖于其他方法的调用时,称为与其他方法紧密连接的方法。紧密连接的方法会使调试和修改变得比较困难,因为它牵涉到更多的因素。松散连接的方法优于紧密连接的方法,但你不可能使每个方法都成为独立的方法。

若要使方法具备较强的独立性,方法之一是尽量减少类变量。

创建方法时,设法将每个方法视为一个黑箱,其他例程不应要求了解该方法的内部工作情况,该方法也不应要求了解它外面的工程情况。这就是为什么你的方法应依靠参数而不应依靠全局变量的原因。

创建专用方法时,请考虑下列指导原则:

1)    将复杂进程放入专用方法。如果应用程序使用复杂的数学公式,请考虑将每个公式放入它自己的方法中。这样使用这些公式的其他方法就不包含用于该公式的实际代码。这样也可以更容易发现与公式相关的问题。

2)    将数据输入/输出(i/o)放入专用方法。

3)    将专用方法中可能要修改的代码隔离。如果你知道某个进程经常变更,请将这个多变的代码放入专用方法,以便以后可以更容易的进行修改,并减少无意中给其他进程带来问题的可能性。

4)    将业务规则封装在专用方法中。业务规则常属于要修改的代码类别,应与应用程序的其余部分隔开。其他方法不应知道业务规则,只有要调用的方法才使用这些规则。

 

3.       设计类和方法时,要达到下列目的:

1)    创建更加容易调试和维护的方法

2)    创建具有强大内聚力的类

3)    创建高度专用的方法

4)    创建松散连接的方法

5)    尽量使方法具有独立性

6)    提高方法的扇入性

7)    降低方法的扇出性

 

2.3     编程原则

1.       为方法和类赋予表义性强的名字

为了使代码更加容易理解,最容易的方法之一是为你的方法赋予表义性强的名字。函数名doitgetit的可读性很难与calculatesalestax retrieveuserid相比。

由缩写方法名组成的代码很难理解和维护,没有理由再这样做了。

给方法正确的命名,可使程序工程的调试和维护工作大大的改观。请认真对待方法命名的工作,不要为了减少键入操作量而降低方法的可理解度。

实际应用举例:

1)    给方法命名时应大小写字母混合使用。如果句子全使用大写字母,那么阅读起来就非常困难,而大小写字母混合使用的句子,阅读起来就很容易。

2)    定义方法名时不要使用缩写。如果你认为应用程序中的某些工程应使用缩写,那么请将这些情况加上注释,并确保每个人在所有时间内都使用这些缩写。决不要在某些方法中对某些单词进行缩写,而在别的方法中却不使用缩写。

 

2.       为每个方法赋予单个退出点

 

3.       创建方法时,始终都应显式地定义它的作用域。

1)    如果你真的想创建一个公用方法,请向代码阅读者说明这一点。

2)    通过为每个方法赋予一个明确定义的作用域,可以减少代码阅读者需要投入的工作量。应确保你为方法赋予最有意义的作用域。如果一个方法只被同一类中的另一个方法调用,那么请将它创建成私有方法。如果该方法是从多个类中的多个方法中调用,请将该说明为公用方法。

 

4.       用参数在方法之间传递数据

应尽量避免使用类变量。一般来说,变量的作用域越小越好。为了减少类变量,方法之一是将数据作为参数在不同方法之间传递,而不是让方法共享类变量。

1)    为每个参数指定数据类型。

2)    始终要对数进行检验,决不要假设你得数据没有问题。程序员常犯的一个错误是在编写方法时假设数据没有问题。在初始编程阶段,当编写调用方法时,这样的假设并无大碍。这时你完全能够知道什么是参数的许可值,并按要求提供这些值。但如果你不对参数的数据进行检验,那么下列情况就会给你带来很大麻烦:另外某个人创建了一个调用方法,但此人不知道允许的值;你在晚些时候添加了新的调用方法,并错误的传递了坏数据。

 

3. 命名约定

所有变量的定义应该遵循匈牙利命名法,它使用3字符前缀来表示数据类型,3个字符的前缀必须小写,前缀后面是由表意性强的一个单词或多个单词组成的名字,而且每个单词的首写字母大写,其它字母小写,这样保证了对变量名能够进行正确的断句。

这样,在一个变量名就可以反映出变量类型和变量所存储的值的意义两方面内容,这使得代码语句可读性强、更加容易理解。

 

3.1     包、类及方法命名

 

标示符类型

命名约定

例子

l 全部小写。

l  标识符用点号分隔开来。为了使包的名字更易读,sun 公司建议包名中的标识符用点号来分隔。

l  sun 公司的标准 java 分配包用标识符 .java 开头。

l 全局包的名字用你的机构的 internet 保留域名开头

局部包

interface.screens

全局包

com.rational.www. interface.screens

类,接口

l 类的名字应该使用名词。

l 每个单词第一个字母应该大写。

l  避免使用单词的缩写,除非它的缩写已经广为人知,如http

class hello ;

class helloworld ;

interface apple ;

方法

l 第一个单词一般是动词。

l  第一个字母是小些,但是中间单词的第一个字母是大写。

l 如果方法返回一个成员变量的值,方法名一般为get+成员变量名,如若返回的值是bool变量,一般以is作为前缀。

l 如果方法修改一个成员变量的值,方法名一般为:set + 成员变量名。

 

getname();

setname();

isfirst();

变量

l