java规范

本文详细介绍了JAVA编程中的设计类和方法的规范,强调了类的内聚性和方法的独立性,同时还提供了命名规则、参数处理等实用建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JAVA规范

 

设计类和方法 

==================

创建具有很强内聚力的类 

方法的重要性往往比类的重要性更容易理解,方法是指执行一个统一函数的一段代码。类常被错误的视为是一个仅仅用于存放方法的容器。有些开发人员甚至把这种思路作了进一步的发挥,将他们的所有方法放入单个类之中。 之所以不能正确的认识类的功能,原因之一是类的实现实际上并不影响程序的执行。当一个工程被编译时,如果所有方法都放在单个类中或者放在几十个类中,这没有任何关系。虽然类的数量对代码的执行并无太大的影响,但是当创建便于调试和维护的代码时,类的数量有时会带来很大的影响。 

类应该用来将相关的方法组织在一起。 当类包含一组紧密关联的方法时,该类可以说具有强大的内聚力。当类包含许多互不相关的方法时,该类便具有较弱的内聚力。应该努力创建内聚力比较强的类。 大多数工程都包含许多并不十分适合与其他方法组合在一起的方法。在这种情况下,可以为这些不合群的方法创建一个综合性收容类。 

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

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

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

每个方法都应执行一项特定的任务,它应出色的完成这项任务。应避免创建执行许多不同任务的方法。 创建专用方法有许多好处。首先调试将变得更加容易。 

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

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

若要使方法具备较强的独立性,方法之一是尽量减少类变量。 创建方法时,设法将每个方法视为一个黑箱,其他例程不应要求了解该方法的内部工作情况,该方法也不应要求了解它外面的工程情况。这就是为什么你的方法应依靠参数而不应依靠全局变量的原因。 

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

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

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

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

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

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

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

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

3) 创建高度专用的方法 

4) 创建松散连接的方法 

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

6) 提高方法的扇入性 

7) 降低方法的扇出性 

 

 

 

编程原则 

==================

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

为了使代码更加容易理解,最容易的方法之一是为你的方法赋予表义性强的名字。函数名DoItGetIt的可读性很难与CalculateSalesTax、 RetrieveUserID相比。 由缩写方法名组成的代码很难理解和维护,没有理由再这样做了。 给方法正确的命名,可使程序工程的调试和维护工作大大的改观。请认真对待方法命名的工作,不要为了减少键入操作量而降低方法的可理解度。 实际应用举例: 

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

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

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

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

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

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

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

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

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

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


命名约定 

==================

变量的定义

变量的定义应该遵循匈牙利命名法,它使用3字符前缀来表示数据类型,3个字符的前缀必须小写,前缀后面是由表意性强的一个单词或多个单词组成的名字,而且每个单词的首写字母大写,其它字母小写,这样保证了对变量名能够进行正确的断句。 这样,在一个变量名就可以反映出变量类型和变量所存储的值的意义两方面内容,这使得代码语句可读性强、更加容易理解。

一般使用驼峰命名法和帕斯卡命名法。Wangguanqiu200991617:35:34

包、类及方法命名 

1) 包 

 全部小写。  标识符用点号分隔开来。为了使包的名字更易读,Sun 公司建议包名中的标识符用点号来分隔。 

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

 全局包的名字用你的机构的 Internet 保留域名开头 。 倒叙

局部包:  interface.screens 

全局包:  com.rational.www. interface.screens 

2) 类,接口 

类的名字应该使用名词。 

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

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

Class Hello ; 

Class HelloWorld ; 

Interface Apple ; 

3) 方法 

第一个单词一般是动词。 

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

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

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

getName();  setName();  isFirst(); 

4) 变量 

第一个字母小写,中间单词的第一个字母大写。 

不要用_&作为第一个字母。 

尽量使用短而且具有意义的单词。 

单字符的变量名一般只用于生命期非常短暂的变量。i,j,k,m,n一般用于integersc,d,e一般用于characters。 

如果变量是集合,则变量名应用复数。 

命名组件采用匈牙利命名法,所有前缀均应遵循同一个组件名称缩写列表。 

String myName;  int[] students;  int i;  int n;  char c;  btNew;  (bt是Button的缩写

5) 常量 

所有常量名均全部大写,单词间以_隔开。  int MAX_NUM; 

6) 其它 

开发人员如果遇到上述表格中未列举的类型,请书面通知相关管理人员,由管理人员集中更新列表内容,不得擅自启用未经确定的新变量前缀。 

 

 

 

 

MVC规范 

==================

 分层

MVC的设计模式中,要求在Application开发中你把商业逻辑,界面显示,数据分离。也就是分别在Model,View,Controller实现:数据,控制(商业逻辑)显示(页面显示)。

规则

1) 用户的所有请求统一由控制器截获

2) 控制器根据请求种类,调用不同的业务对象(业务bean),根据业务对象的返回值,来决定该把哪个页面相应给用户

3) 在jsp中,不会出现任何业务代码/数据库操作。可以有实例化bean的操作,或者从session、数据bean中取得数据

4) 在作为控制器的servlet中不会出现网页内容、业务代码、数据库操作。可以有接受request值、实例化bean、调用bean的方法、页面转移

5) 数据bean对应数据库中某张表里的一条记录,这张表中的所有列都应该成为数据bean的私有属性

6) 业务beanController(servlet)中实例化

7) 数据bean在业务beanController中实例化

其它规范 

==================

Java文件样式

 所有的 Java(*.java)文件都必须遵守如下的样式规则

1)版权信息

版权信息必须在 java文件的开头,比如:

 /**

* Copyright ® 2000 Shanghai XXX Co. Ltd.

* All right reserved.

*/

其他不需要出现在 javadoc的信息也可以包含在这里。

2) Package/Imports

package行要在 import行之前,import中标准的包名要在本地的包名之前,而且按照字母顺序排列。如果 import行中包含了同一个包中的不同子目录,则应该用 *来处理。

 package hotlava.net.stats;

 import java.io.*;

 import java.util.Observable;

 import hotlava.util.Application;

这里 java.io.*使用来代替InputStream and OutputStream的。

 3) Class

 (1)类的注释

接下来的是类的注释,一般是用来解释类的。

   /**

* A class representing a set of packet and byte counters

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值