阿里巴巴java编程规约
码出高效,码出质量
以Java开发者为中心视角,划分为编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约七个维度,再根据内容特征,细分成若干二级子目录。
编程规范
命名风格
- 常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长
- 抽象类命名使用Abstract或Base开头;异常类命名使用Exception结尾;测试类命名以它要测试的类的名称开始,以Test结尾。
- POJO类中布尔类型的变量,都不要加is前缀,否则部分框架解析会引起序列化错误。
- 包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式。
常量定义
- 不要使用一个常量类维护所有常量,要按常量功能进行归类,分开维护。
- 常量的复用层次有五层:跨应用共享常量、应用内共享常量、子工程内共享常量、包内共享常量、类内共享常量。
代码分格
- 左小括号和字符之间不出现空格;同样,右小括号和字符之间也不出现空格;而左大括号前需要空格
- 注释的双斜线与注释内容之间有且仅有一个空格
- 外部正在调用或者二方库依赖的接口,不允许修改方法签名,避免对接口调用方产生影响。接口过时必须加@Deprecated注解,并清晰地说明采用的新接口或者新服务是什么。
- Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用equals。
- 所有的相同类型的包装类对象之间值的比较,全部使用equals方法比较。
- 关于基本数据类型与包装数据类型的使用标准
- 构造方法里面禁止加入任何业务逻辑,如果有初始化逻辑,请放在init方法中。
- POJO类必须写toString方法。使用IDE中的工具:source> generatetoString时,如果继承了另一个POJO类,注意在前面加一下super.toString。
- 使用索引访问用String的split方法得到的数组时,需做最后一个分隔符后有无内容的检查,否则会有抛IndexOutOfBoundsException的风险。
- 不要在foreach循环里进行元素的remove/add操作。remove元素请使用Iterator方式,如果并发操作,需要对Iterator对象加锁。
- 不要在条件判断中执行其它复杂的语句,将复杂逻辑判断的结果赋值给一个有意义的布尔变量名,以提高可读性。
发表回复