命名规范
1.强制---代码中的命名都不能用下划线或$开头,也不能以此结尾。---代码命名严禁使用拼音与英文混合的命名方法,更不应该使用中文进行命名,即使纯拼音命名方法也要尽量不用,规范的命名可以让其他读者易于理解。
2.强制---类名的命名使用UpperCamelCase风格,即必须遵从驼峰形式,DO/BO/DTO/VO/AO这种例外,这些例外组合使用也应该全大写,例如UserDO XmlService TcpUdpDeal。
此处DO(Data Object)是与数据库表结构一一对应,通过DAO层向上传输数据源对象。DTO(Data Transfer Object)是数据传输对象,Service或Manager向外传输的对象。BO(Business Object)是业务对象,由Service层输出的封装业务逻辑的对象。AO(Application Object)是应用对象。VO (View Object)是视图对象,主要对应展示界面显示的数据对象,用一个VO对象类封装整个界面展示所需的对象数据
3.强制---方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从驼峰形式。即首字母为小写的UpperCamelCase风格。
4.强制---常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。例如:MAX_VALUE、PI、MIN_WIDTH等
5.强制---抽象类命名使用 Abstract 或 Base 开头;异常类命名使用 Exception 结尾;测试类命名以它要测试的类的名称开始,以 Test 结尾。例如AbstractList、AbstractMap、NullPointerException、IndexOutOfBoundsException、CalculatorTest。
6.强制---数组类型的定义使用String[] args的形式,禁止使用String args[]的格式。
7.强制---POJO 类中布尔类型的变量,都不要加 is,否则部分框架解析会引起序列化错误。
针对isXxxx,Gson序列化方式和fastjson和jackson有所不同,为了避免发生难以预料的错误,则要直接使用xxxx命名。
8.强制---包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式。
9.强制---严禁完全不规范的缩写,避免望文不知义。例如AbstractClass“缩写”命名成 AbsClass,这样会严重降低代码的可读性。
10.推荐---任何自定义编程元素在命名时,使用尽量完整的单词组合来表达其意,这样可以达到代码自解释的目标。例如PullCodeFromRemoteRepository,从远程仓库拉去代码的类名。
11.推荐---使用了设计模式的模块、接口、类和方法,在命名时要体现出具体的模式。例如,工厂模式后缀加Factory,单例模式后缀Singleton,装饰模式后缀Decorator,代理模式Proxy和观察者模式Observer等,这样有利于阅读者快速理解架构设计理念。
12.推荐---接口类中的方法和属性不要加任何修饰符号(public 也不要加),保持代码的简洁性,并加上有效的 Javadoc 注释。尽量不要在接口里定义变量,如果一定要定义变量,肯定是与接口方法相关,并且是整个应用的基础常量。
/**
* 这是一个动物接口,定义了动物的基本行为。
*/
publicinterfaceAnimal {
/**
* 动物发出声音的方法。
*/
voidmakeSound();
/**
* 动物进食的方法。
*/
voideat();
}
13.接口和实现类的命名规则有两套,强制---对于 Service 和 DAO 类,基于 SOA 的理念,暴露出来的服务一定是接口,内部的实现类用 Impl 的后缀与接口区别;推荐---形容能力的接口名称,取对应形容词做接口名(通常是-able结尾)。
14.枚举类名后最好带上Enum后缀,枚举成员名称需要全大写,单词之间用下划线隔开,枚举其实就是特殊的常量类,不能继承其他类,是一个被命名的整型常数集合,且构造方法被默认强制是私有。例如,一年的四季,12个月份等。
/**
* 这是一个颜色枚举类,定义了常见的颜色。
*/
publicenumColor {
/**
* 红色
*/
RED,
/**
* 绿色
*/
GREEN,
/**
* 蓝色
*/
BLUE
}
15.各层命名:
Service/DAO 层方法命名规约
1) 获取单个对象的方法用 get 做前缀。例如getUserById
2) 获取多个对象的方法用 list 做前缀。例如listUsers
3) 获取统计值的方法用 count 做前缀。例如countUsers
4) 插入的方法用 save/insert 做前缀。例如saveUser
5) 删除的方法用 remove/delete 做前缀。
6) 修改的方法用 update 做前缀。
领域模型命名规约
1) 数据对象:xxxDO,xxx 即为数据表名。
2) 数据传输对象:xxxDTO,xxx 为业务领域相关的名称。
3) 展示对象:xxxVO,xxx 一般为网页名称。
4) POJO 是 DO/DTO/BO/VO 的统称,禁止命名成 xxxPOJO。
依据阿里开发规范整理