编程规约之命名风格
强制:
代码中命名均不能以下划线、美元符开始,也不能以下划线或美元符结束;
严禁拼音与英文混合,更不允许使用中文的方式;
代码注释避免使用歧视性词语;
class name uses UpperCamelCase;
方法名、参数名、成员变量、局部变量统一使用 lowerCamelCase;
常量命名全部大写,单词间下划线隔开,力求语义表达完整,名字长也没关系;
抽象类命名以Abstract/Base开头,异常类命名使用Exception结尾,测试类命名以要测试的类开始,以Test结尾;
数组表示使用类型紧挨中括号;
POJO类中任何bool类型变量都不要加is,否则部分框架解析会引起序列化错误;
包名统一使用小写、单数形式,若有复数含义,类名亦可,点分间隔之间只有一个自然语义的英语单词;
避免 子父类的成员变量之间、不同代码块成员变量之间采用完全相同的命名,理解性会降低;
子父类成员变量名相同,即使是public也能通过编译,同一方法内的不同代码块中同名也是合法的,但是需要避免这些情况;
杜绝完全不规范的缩写,避免忘文生义;
推荐:
为了达到代码自解释的目的,编程元素在命名时使用尽量完整的单词组合来表示;
常量与变量命名时,表示类型的名词放在词尾,以提高辨识度;
如果模块、接口、类、方法使用了设计模式,应该在命名时体现出具体模式;
接口中的方法和属性不要加任何修饰符号(public也不要),保持代码简洁性,并且用Javadoc注释,尽量不要在接口里定义变量,要是一定要定义,确定与接口方法相关,并且是整个应用的基础常量;
JDK8 允许有默认实现,那么这个default方法是对所有实现类都有价值的默认实现;
接口和实现类的命名有两套规则:
[强制]对于Service和DAO类,基于SOA的理念,暴露出来的服务一定是接口,内部的实现类用Impl的后缀与接口区别;
正例:CacheServiceImpl 实现CacheService接口;
如果是形容能力的接口名称,去对应的形容词为接口名(通常是-able的形容词)
AbstractTranslator实现Translatable
枚举类名带上Enum后缀,枚举成员名称需要全部大写,单词间用下划线隔开;
枚举是特殊的常量类,且构造方法被默认强制私有
正例: 枚举名字ProcessStatusEnum的成员名称:SUCCESS、UNKNOWN_REASON
参考
各层命名规约:
A) Service/DAO 层命名规约
B) 领域模型的命名规约
- 数据对象:xxxDO,xxx为数据表名;
- 数据传输对象:xxxDTO,xxx为业务领域相关的名称;
- 展示对象:xxxVO,xxx一般为网页名称;
- POJO是DO/DTO/BO/VO的统称,仅仅命名成xxxPOJO;
© 著作权归作者所有
微博