java编程规约
一、命名风格
1、代码中的命名不能以下划线和美元符号开始和结束。
2、代码中严禁使用拼音和英文混合的方式,更加不能使用中文。
3、类名必须使用驼峰形式(UpperCamelCase),一下例外:BO、DO、DTO。
4、方法名、参数名、成员变量名、局部变量名都统一使用lowerCamelCase。
5、常量名全部大写,各个单词之间用 _ 分开,比如:MAX_STOCK_COUNT。
6、抽象类命名必须以Abstract或者Base开头,异常类命名以Exception结尾,测试类以Test结尾。
7、中括号是数组类型的一部分,String[] args。
8、POJO中布尔类型的变量都不要加is,否则会引起序列化错误。
9、包名一律使用小写,点分符之间使用有自然语义的单词,不允许使用复数形式,类名可以使用复数形式。
10、杜绝完全不规范的简写,避免望文不知义。
11、如果使用了设计模式,要在类名中体现具体的设计模式,比如:OrderFactory/LoginProxy
12、枚举类名要以Enum结尾,枚举统一使用大写各个单词以下划线分开。
13、各层的命名规约:
A)Service、DAO层方法命名:
1)获取单个对象以get作为前缀;
2)获取多个对象以list作为前缀;
3)删除用remove所为前缀;
4)保存用save作为前缀;
5)更新用update作为前缀;
B)领域模型命名:
1)数据对象:xxxDO,xxx即为数据表名;
2)数据传输对象:xxxDTO,xxx为业务领域相关名称;
3)展示对象;xxxVO,xxx为网页的名称;
二、常量定义
1、不允许任何魔法值,直接出现在代码中,比如:“JRXJ”+xxx。
2、long赋初始值时必须用L结尾。
3、不要使用一个常量类维护所有常量,根据功能进行区分,比如缓存相关的用CacheConstant,系统相关的用ConfigConstant。
4、常量的复用层次:跨应用常量、应用内共享常量、子工程内共享常量、包内共享常量、类内共享常量,
跨应用共享常量:保存在二方库中,通常是client jar;
应用内共享常量:保存在一方库中,通常在modules的constant目录下面;
子工程内共享常量:在子工程的constant目录下面;
包内共享常量:当前包单独的constant目录下面;
类内共享常量:直接在类内部 private static final ...
5、如果一个变量在一定的范围内变化,而且带有一定的延生属性,那么使用枚举。
三、代码格式
1、缩进采用4空格,禁止使用tab。
2、单行字符个数不超过120。
3、方法参数在定义和传入时,多个参数逗号后面要加空格。
四 、OOP规约
1、避免通过类对象的引用访问静态的变量和方法,无谓增加编译器负担。
2、所有覆写方法必须加上@Override。
3、相同参数类型,相同业务含义才可以使用java可变参数。
4、接口过时时必须加上@Deprecated注解。
5、不要使用已经明确提示过时的类和方法。
6、所有相同类型的包装类之间使用equals比较大小,比如:-127~128的Integer类型可以用==比较,但是超过这个范围必须使用equals。
7、关于基本数据类型和包装数据类型使用标准如下:
1)所有的POJO类必须使用包装数据类型。
2)RPC(远程过程调用)方法返回值和参数必须使用包装类型。
3)所有的局部变量使用基本数据类型。
任何NPE问题,或者入库检查都是由使用者来保证。
8、定义DO、DTO、VO、POJO类时不要给任何属性赋予初始值。
9、序列化类新增属性时不要修改serialVersionUID字段的值,避免反序列失败,如果完全不兼容升级,避免反序列化混乱请修改这个字段的值。
10、构造方法中,禁止加入任何业务逻辑,如果有初始化逻辑,请放在init方法里面。
11、POJO类必须写toString方法,如果继承了一个POJO类,要加上super.toString()。这样在抛出异常时直接调用toString便于排查问题。
12、一个类有多个构造方法或者多个同名的方法,那么这些方法应该按顺序放在一起。
13、类里面方法定义的顺序:公有方法、保护方法、私有方法、setter,getter方法,在setter,getter方法中不要增加业务逻辑增加排查问题难度。
14、慎用Object的clone方法,因为他是浅层拷贝,如果要使用必须重写实现属性对象的拷贝。
15、