阿里巴巴编码规范笔记
(一)命名风格
1.不能以下划线或美元符号,下划线或美元符号
2.代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。
3.驼峰命名
4.常量命名全大写用_隔开
5.POJO不要添加is前缀,否则部分框架解析会引起序列化错误
6. 包名统一使用小写,包名统一使用单数形式,类名可以使用复数形式
7.避免在父子类之间、或者不同的代码块局部变量之间采用完全相同的命名
8.杜绝不规范的缩写
9.尽量完整的单子组合表达AtomicReferenceFieldUpdater
10.表示类型的放在词伟
11.命名时需要提现设计模式
12.接口方法不加修饰符,尽量不要在接口里定义变量。
13.形容能力的接口名称,取对应的形容词为接口名(通常是-able的形容词)
14.枚举带上Enum,成员大写,单词用下划线隔开。
(二)常量定义
1. 不允许任何魔法值(未经预先定义的常量)直接出现在代码中。
4. 不要使用一个常量类维护所有常量,要按照常量功能进行归类,分开维护。通常定义五层常量:跨应用共享常量,应用内共享常量,子工程内共享常量、包内共享常量、类内共享常量private static final。(1) 跨应用共享常量:放置在二方库中(2)应用内的共享常量:放置在一方库中,通常是子模块的constant目录下。
5. week 或者 Seanson有延伸信息的使用enum来定义。
(三)代码风格
3.if/for/while/switch/do保留字与括号间必须加空格。
4.任何二目、三目运算符的左右两边都需要加一个空格。
5.采用4个空格缩进,禁止使用tab字符。IDEA勾选use tab character;而eclipse,必须勾选insert spaces for tabs。
6.强制转换 long first=1000L; int second=(int)first+2;不需要空格
8.单行字符限制不超过120个字符:(1)第二行缩进4个空格(2)运算符与下文一起换行(3)方法调用的点符号与下文一起换行(4)方法调用中的多个参数需要换行时,在逗号后进行。method(args1,args2,argsx);
9. 方法参数在定义和传入时,多个参数逗号后边必须加空格。method(args1,空格args2,空格args3)
11.单个方法的总数不超过80行
12. 每行=号没有必要对齐
13.不同逻辑,不同语义,不同业务之间的代码之间插入一个空行分隔开来可以提升可读性。
(四)OOP 规约
1.静态类和方法直接用类名来访问即可
2.所有的覆写方法,必须家@Override
3.相同参数类型,相同业务含义,才能使用java的可变参数,避免使用Object
6.使用常量或者确定值来调用equals
7.所有包装对象间的值比较,全部使用equals方法比较。
8.float浮点数之间的等值判断,基本数据类型不能用==来比较,包装数据类型不能用equals来判断。
10.禁止使用构造方法BigDecimal(double)的方式把double值转化为bigdecimal。推荐入参String的构造方法或者BigDecimal的valueOf方法。
11. 所有POJO类属性必须使用包装数据类型(数据库返回null,用基本数据类型接收有NPE的风险),RPC 方法返回值和参数必须使用包装数据类型,所有的局部变量使用基本数据类型。
12. 定义POJO类时,不要设定任何属性默认值
13.不要需改serialversionUID,如果完全不兼容升级才修改。
14.构造方法里禁止加入业务逻辑,如果有请放在init方法中。
15.POJO类必须写toString方法,继承注意前面加一下super.toString。
21.循环体内,使用stringbuilder的append方法进行扩展