编码规范
命名规范
- 任何包名、类名、方法名、属性等都要使用有意义的单词,有意义的命名;命名不在于长,而在于解释
- 包名统一使用小写
- 类名使用驼峰形式,首字母大写
- 接口中属性不要加任何修饰符
- 方法名、参数名、成员变量、局部变量使用驼峰形式,首字母小写
- 常量全部大写,单词之间使用下划线连接
- 抽象类使用Abstract或者Base开头
- Dao/Service
- 获取单个对象 getXXX()
- 获取多个对象 listXXX()
- 添加对象 addXXX() / saveXXX()
- 删除对象 removeXXX() / deleteXXX()
- 修改对象 updateXXX()
OOP规约
- 静态变量/方法,通过 类名.变量/方法;不要通过实例访问
- 所有的覆写方法,都要加上@Override注解
- 构造方法不要添加逻辑,如果逻辑可以在 init 初始化方法中添加
- 调用方法,一定要明确;如果是内部调用,要指明this;如果是父类调用指明super
- 明确方法功能,一个方法,只做一件事情
- 方法参数不能超过5个,超过5个,可以将参数封装成对象
- 所有判断分支,都要有默认处理方式;即else 或者default
- 方法返回不要返回null;可以返回空对象或者特定的对象
- 工具类 必须以Utils结尾,构造器必须私有
- 一个类的多个构造方法,顺序放在一起,便于阅读
- 类中方法定义的顺序,公有方法 > 保护方法 > 私有方法 > getter/setter方法
- 函数式接口声明,接口必须有@FunctionalInterface注解(函数式接口:只有一个抽象方法的接口)
常见坑
-
String split方法等到数组时,需要最后一个分隔符后有无内容的检查,否则会抛出IndexOutOfBoundsException的风险
String str = "a,b,c,,"; String[] arg = str.split(","); //预期大于3,但是结果是3 System.out.println(arg.length);
-
String split 中几个特殊的需要专业的字符:或|,点.,加+,乘*
String[] arg = str.split("\\|");
-
包装类型之间的值比较;全用equals比较;
如 Integer i ;在-128到127范围内赋值,Integer对象实在IntegerCache.cache中,会复用对象,这个区间 == 比较是相等的,但是不在该范围内比较 是不等的,所有包装类型比较都用equals
-
实现Compartor,实现compare方法中比较大小如x,y使用 大于 x>y 或者小于 x<y;不要使用x-y;因为相减可能会产生溢出
网友评论