如 intUserAge 用户的年龄
cn.gov.core.server.persistent ----- 服务器端持久层包
cn.gov.core.server.registry ----- 服务器端容器组件
cn.gov.core.server.client ----- 服务器端对客户端的管理组件
cn.gov.core.client ----- 客户端组件
类名是一个名词;
类名采用大小写混合的方式,每个单词的首字母大写;
类名应该简洁而富于描述。使用完整单词,避免缩写词(除非该缩写词被更广泛使用,像URL,HTML)
例子
class Hello ;
class HelloWorld ;
class DynamicTreeNode;
4.接口
命名约定
命名规则:大小写规则与类名相似;
接口命名一般为I + 具体名称。
例子
interface IDynamicTree
5. 方法(Methods)
方法名是一个动名词词组。
采用大小写混合的方式,第一个单词一般是动词,首字母小写,其后单词的首字母大写,不用缩写形式;
如果方法返回一个成员变量的值,方法名一般为get + 成员变量名,如若返回的值是bool变量,一般以is作为前缀;
如果方法修改一个成员变量的值,方法名一般为:set + 成员变量名。
例子
getName()
setName()
isFirst()
除了变量名外,所有实例,包括类,类常量,均采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。
不要用_或&作为第一个字母, 尽管这在语法上是允许的。
变量名的选用应该短而且具有意义,尽量使用易于记忆的单词,即,能够指出其用途。尽量避免单个字符的变量名,除非是一次性的临时变量。
临时变量通常被取名为i,j,k,m和n,它们一般用于整型;c,d,e,它们一般用于字符型。。
如果变量是集合,则变量名应用复数。
java命名规范
1.1 包的命名
Java包的名字都是由小写单词组成。为保障每个 Java包命名的唯一性,在最新的Java编程规范中,要求程序员在自己定义的包的名称之前加上唯一的前缀。由于互联网上的域名称是不会重复的,所以程序员一般采用自己在互联网上的域名称作为自己程序包的唯一前缀。
例如: net.sinodata.javagroup
1.2 类的命名
类的名字必须由大写字母开头而单词中的其他字母均为小写;
1) 如果类名称由多个单词组成,则每个单词的首字母均应为大写,如TestPage;
2) 如果类名称中包含单词缩写,则这个所写词的每个字母均应大写,如:XMLExample;
由于类是设计用来代表对象的,所以在命名类时应尽量选择名词。如: Circle
1.3 方法的命名
方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头。
例如: sendMessge
1.4 常量的命名
常量的名字应该都使用大写字母,并且指出该常量完整含义。如果一个常量名称由多个单词组成,则应该用下划线来分割这些单词。例如: MAX_VALUE
关于常量的命名方法,无论什么时候,均提倡应用常量取代数字、固定字符串。
常量可以集中在程序开始部分定义或者更宽的作用域内
1.5 参数的命名
参数的命名规范和方法的命名规范相同,而且为了避免阅读程序时造成迷惑,请在尽量保证参数名称为一个单词的情况下使参数的命名尽可能明确。
1.6 变量命名 & 匈牙利命名法
变量命名的方法采用匈牙利命名法,基本结构为scope_typeVariableName,它使用3字符前缀来表示数据类型,3个字符的前缀必须小写,前缀后面是由表意性强的一个单词或多个单词组成的名字,而且每个单词的首写字母大写,其它字母小写,这样保证了对变量名能够进行正确的断句。例如,定义一个整形变量,用来记录文档数量:intDocCount,其中int表明数据类型,后面为表意的英文名,每个单词首字母大写。这样,在一个变量名就可以反映出变量类型和变量所存储的值的意义两方面内容,这使得代码语句可读性强、更加容易理解。
byte、int、char、long、float、 double、boolean和short。
变量类型和首字母对照关系如下:
byte bye
char chr
float flt
boolean bln
Integer/int int
String str
Single sng
short sht
Long/long lng
Double/double dbl
Currency cur
对于数组,在数据类型的前缀前再增加一个a,例如字符串数组为astr。
对于在多个函数内都要使用的全局变量,在前面再增加“g_”。例如一个全局的字符串变量:g_strUserInfo。
在变量命名时要注意以下几点:
· 选择有意义的名字,注意每个单词首字母要大写。
· 在一段函数中不使用同一个变量表示前后意义不同的两个数值。
· i、j、k等只作为小型循环的循环索引变量。
· 避免用flag来命名状态变量。用Is来命名逻辑变量,如:blnFileIsFound。通过这种给布尔变量肯定形式的命名方式,使得其它开发人员能够更为清楚的理解布尔变量所代表的意义。
· 如果需要对变量名进行缩写时,一定要注意整个代码中缩写规则的一致性。例如,如果在代码的某些区域中使用intCnt,而在另一些区域中又使用intCount,就会给代码增加不必要的复杂性。建议变量名中尽量不要出现缩写。
· 通过在结尾处放置一个量词,就可创建更加统一的变量,它们更容易理解,也更容易搜索。例如,请使用strCustomerFirst和strCustomerLast,而不要使用strFirstCustomer和strLastCustomer。常用的量词后缀有:First(一组变量中的第一个)、Last(一组变量中的最后一个)、Next(一组变量中的下一个变量)、Prev(一组变量中的上一个)、Cur(一组变量中的当前变量)。
· 为每个变量选择最佳的数据类型,这样即能减少对内存的需求量,加快代码的执行速度,又会降低出错的可能性。用于变量的数据类型可能会影响该变量进行计算所产生的结果。在这种情况下,编译器不会产生运行期错误,它只是迫使该值符合数据类型的要求。这类问题极难查找。
· 尽量缩小变量的作用域。如果变量的作用域大于它应有的范围,变量可继续存在,并且在不再需要该变量后的很长时间内仍然占用资源。它们的主要问题是,任何类中的任何方法都能对它们进行修改,并且很难跟踪究竟是何处进行修改的。占用资源是作用域涉及的一个重要问题。对变量来说,尽量缩小作用域将会对应用程序的可靠性产生巨大的影响。
1. JAVA编码规范
1.1 命名规范
定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,减少项目组中因为换人而带来的损失。(这些规范并不是一定要绝对遵守,但是一定要让程序有良好的可读性)。
所有变量的定义应该遵循匈牙利命名法,它使用3字符前缀来表示数据类型,3个字符的前缀必须小写,前缀后面是由表意性强的一个单词或多个单词组成的名字,而且每个单词的首写字母大写,其它字母小写,这样保证了对变量名能够进行正确的断句。
这样,在一个变量名就可以反映出变量类型和变量所存储的值的意义两方面内容,这使得代码语句可读性强、更加容易理解。
1.1.1 包、类及方法命名
1.1.1.1 包(Packages)
命名约定
l 一个唯一包名的前缀总是全部小写的ASCII字母并且是一个顶级域名;
l 本系统包的命名规则为 gov. + server / client + 模块名
例子
对于本系统FrameWork包的划分为:
cn.gov.core.server.http ----- 服务器端控制层包
cn.gov.core.server.persistent ----- 服务器端持久层包
cn.gov.core.server.registry ----- 服务器端容器组件
cn.gov.core.server.client ----- 服务器端对客户端的管理组件
cn.gov.core.client ----- 客户端组件
如各个应用模块包的命名也分为服务器端和客户端
cn.gov.cpc.server.模块名
cn.gov.cpc.client.模块名
1.1.1.2 类(Classes)
命名约定
l 类名采用大小写混合的方式,每个单词的首字母大写;
l 类名应该简洁而富于描述。使用完整单词,避免缩写词(除非该缩写词被更广泛使用,像URL,HTML)
例子
class Hello ;
class HelloWorld ;
class DynamicTreeNode;
1.1.1.3 接口(Interfaces)
命名约定
l 命名规则:大小写规则与类名相似;
l 接口命名一般为I + 具体名称。
例子
interface IDynamicTree
1.1.1.4 方法(Methods)
l 方法名是一个动名词词组。
l 采用大小写混合的方式,第一个单词一般是动词,首字母小写,其后单词的首字母大写,不用缩写形式;
l 如果方法返回一个成员变量的值,方法名一般为get + 成员变量名,如若返回的值是bool变量,一般以is作为前缀;
l 如果方法修改一个成员变量的值,方法名一般为:set + 成员变量名。
例子
getName()
setName()
isFirst()
1.1.1.5 变量(Variables)
l 除了变量名外,所有实例,包括类,类常量,均采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。
l 不要用_或&作为第一个字母, 尽管这在语法上是允许的。
l 变量名的选用应该短而且具有意义,尽量使用易于记忆的单词,即,能够指出其用途。尽量避免单个字符的变量名,除非是一次性的临时变量。
l 临时变量通常被取名为i,j,k,m和n,它们一般用于整型;c,d,e,它们一般用于字符型。。
l 如果变量是集合,则变量名应用复数。
命名组件采用匈牙利命名法,所有前缀均应遵循同一个组件
标识符类型 | 命名约定 | 例子 |
包(Packages) | l 一个唯一包名的前缀总是全部小写的ASCII字母并且是一个顶级域名,通常是com,edu,gov,mil,net,org。 l 包名的后续部分根据不同机构各自内部的命名规范而不尽相同。这类命名规范可能以特定目录名的组成来区分部门(department),项目(project),机器(machine),或注册名(login names)。 | 局部包: interface.screens 全局包: com.rational.www.interface.screens |
类 (Classes) | l 类名是一个名词; l 类名采用大小写混合的方式,每个单词的首字母大写; l 类名应该简洁而富于描述。使用完整单词,避免缩写词(除非该缩写词被更广泛使用,像URL,HTML) | class Hello ; class HelloWorld ; class DynamicTreeNode; |
接口 (Interfaces) | l 命名规则:大小写规则与类名相似; l 接口命名一般为I + 具体名称。 | interface IDynamicTree |
方法 (Methods) | l 方法名是一个动名词词组。 l 采用大小写混合的方式,第一个单词一般是动词,首字母小写,其后单词的首字母大写,不用缩写形式; l 如果方法返回一个成员变量的值,方法名一般为get + 成员变量名,如若返回的值是bool变量,一般以is作为前缀; l 如果方法修改一个成员变量的值,方法名一般为:set + 成员变量名。 |
getName(); setName(); isFirst(); |
变量 (Variables) | l 除了变量名外,所有实例,包括类,类常量,均采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。 l 不要用_或&作为第一个字母, 尽管这在语法上是允许的。 l 变量名的选用应该短而且具有意义,尽量使用易于记忆的单词,即,能够指出其用途。尽量避免单个字符的变量名,除非是一次性的临时变量。 l 临时变量通常被取名为i,j,k,m和n,它们一般用于整型;c,d,e,它们一般用于字符型。。 l 如果变量是集合,则变量名应用复数。 | String myName; int[] students;
int i; int n; char c
|
实例变量(Instance Variables) | l 命名规则同变量的命名规则。 | int employeeId; String name; |
常量 (Constants) | l 类常量和ANSI常量的声明,应该全部大写,单词间用下划线隔开。(尽量避免ANSI常量,容易引起错误)。 | static final int MIN_WIDTH = 4; |
总体
代码编制是否遵照编码规范?
缺陷修改是否完全完成?
所有的代码是否风格保持一致?
注释
所有的注释是否是最新的?
所有的注释是清楚和正确?
若代码修改注释是否很方便修改?
所有代码异常处理是否都有注释?
每一功能目的是否都有注释?
是否按注释类型格式编写注释?
代码注释量是否达到了规定值?
源代码质量
所有变量的命名是否依照规则?
循环嵌套是否优化到最少?
所有代码是否易懂?
所有设计要求是否都实现?