首页 > 代码库 > 阿里编码规范学习
阿里编码规范学习
针对附录中的阿里编码规范,直接指定标题位置,或列出相应规范内容,与其说是编码规范,不如说是新手防坑指南,菜鸟们很值得一看。
一编码规范
(一)命名规约
6.【强制】抽象类命名使用 Abstract 或 Base 开头;异常类命名使用 Exception 结尾;测试类 命名以它要测试的类的名称开始,以 Test 结尾。
7.【强制】中括号是数组类型的一部分,数组定义如下:String[] args;
个人理解:禁止使用String args[]。同时数组创建又分为动态创建和静态创建,
静态:int intArray [] = {30,31,32};
动态:int[] intArray = new int[3];
动态数组能够在实际应用中改变长度,arrayList就是一个复杂的动态数组。静态不能改变长度。
8.【强制】POJO 类中布尔类型的变量,都不要加 is.
个人理解:容易造成某些框架的或关键字的识别混乱。
12. 【推荐】接口类中的方法和属性不要加任何修饰符号(public 也不要加)
个人理解:因为接口中的方法等一定要被实现,所以除了public都没什么意义。既然只能加public那就直接省略了,将其默认为public
13.【强制】很多人对实现类命名时使用的时imp。这里建议使用impl,就是为了统一标准。统一的命名规范能够更好的利用通配符,例如调包时xxx.com.test.*.impl。
13.【参考】方法命名规则。统一方面命名规则后能够直接通过方面名就知道方法的大概通途。如:查询单个对象用get。
(二)常量定义
1. 【强制】不允许出现任何魔法值(即未经定义的常量)直接出现在代码中。反例: String key="Id#taobao_"+tradeId;
个人理解:解决硬编码问题。方便后期维护及全家利用。
3. 【推荐】不要使用一个常量类维护所有常量,应该按常量功能进行归类,分开维护。
5. 【推荐】如果变量值仅在一个范围内变化用 Enum 类。
正例:public Enum{ MONDAY(1), TUESDAY(2), WEDNESDAY(3), THURSDAY(4), FRIDAY(5), SATURDAY(6), SUNDAY(7);}
(三)格式规约
5. 【强制】缩进采用 4 个空格,禁止使用 tab 字符。
6. 【强制】单行字符数限制不超过 120 个,
7. 【强制】方法参数在定义和传入时,多个参数逗号后边必须加空格。
10. 【推荐】不同业务逻辑和语义之间要插入一行(仅一行)空行。
(四)OOP规约
3. 【强制】相同参数类型,相同业务含义,才可以使用 Java 的可变参数,
8. 【强制】关于基本数据类型与包装数据类型的使用标准如下: 1) 所有的 POJO 类属性必须使用包装数据类型。 2) RPC 方法的返回值和参数必须使用包装数据类型。 3) 所有的局部变量【推荐】使用基本数据类型。
个人理解(1)和(2)中使用基本类型时,初始化或返回值为null时会默认为0,如果0有特殊含义将会造成不必要的异常。对于(3)中的理解。局部变量随着方法的存在而调用,随着方法的销毁而销 毁。如果是封装类型,当我们多次调用这个方法时,就会创建很多次封装类型的变量,如果用基本类型则会避免。
9. 【强制】定义 DO/DTO/VO 等 POJO 类时,不要设定任何属性默认值。
个人理解:更新操作的时候可能产生错误数据,例如时间字段。
17. 【推荐】循环体内,字符串的联接方式,使用 StringBuilder 的 append 方法进行扩展。
个人理解:减少new String的次数,节省内存
(五)集合处理规则
1. 【强制】关于 hashCode 和 equals 的处理,遵循如下规则:
1) 只要重写 equals,就必须重写 hashCode。 2) 因为 Set 存储的是不重复的对象,依据 hashCode 和 equals 进行判断,所以 Set 存储的 对象必须重写这两个方法。 3) 如果自定义对象做为 Map 的键,那么必须重写 hashCode 和 equals。
个人理解:避免equals相等时,hashCode不相等。equals()相等的两个对象,hashcode()一定相等;equals()不相等的两个对象,却并不能证明他们的hashcode()不相等。
2. 【强制】ArrayList的subList结果不可强转成ArrayList,否则会抛出ClassCastException 异常:
个人理解:subList后只是在原ArrayList基础上拿我想要的部分。对原集合和subList视图集合操作时会相互影响。
(未完待续)
阿里编码规范学习