Skip to content

Latest commit

 

History

History
216 lines (159 loc) · 9.75 KB

ali.md

File metadata and controls

216 lines (159 loc) · 9.75 KB

《阿里Java开发手册》定制纪录

只记录较大的改动,对更多条目内容的重新组织与扩写,则未一一冗述。

(一) 命名规约

对应 阿里规范《命名风格》一章

VIP 规范 阿里规范 修改
13. 变量、参数重名覆盖 新增规则
1. 禁止拼音缩写 2. 严禁使用拼音与英文混合的方式 改写规则
3. 禁用其他编程语言风格的前缀和后缀 1. 代码中的命名均不能以下划线或美元符号开始 扩写规则,把其他语言的啰嗦都禁止掉
4. 命名的好坏,在于其“模糊度” 11. 为了达到代码自解释的目标 扩写规则,参考《Clean Code》的更多例子
6. 常量命名全部大写 5.常量名大写 扩写规则
7. 类型与中括号紧挨相连来定义数组 删除规则,非命名风格,也不重要
13. 接口类中的方法和成员变量不要加任何修饰符号 移动规则,非命名风格,移到类设计
16. 各层命名规约 删除规则,各公司有自己的习惯

(二) 格式规约

对应 阿里规范《代码格式》一章

VIP 规范 阿里规范 修改
1. 项目组统一的代码格式模板 规则1-8 用IDE模版代替逐条描述
同时对Tab/空格不做硬性规定
3. 用小括号来限定运算优先级 新增规则
4. 类内方法定义的顺序 新增规则
5. 通过空行进行逻辑分段 11. 不同逻辑、不同语义 改写规则
6. 避免IDE格式化 新增规则
10.单个方法行数不超过80行 删除规则,非格式规约,移动方法设计
11.没有必要增加若干空格来对齐 删除规则,现在很少人这么做

(三) 注释规约

对应 阿里规范《注释规约》一章

VIP 规范 阿里规范 修改
2. 删除空注释,无意义注释 增加规则
7. JavaDoc中不要大量使用HTML标签和转义字符 增加规则
1. 注释的基本要求 9. 对于注释的要求 扩写规则
4.避免创建人的注释 3.所有的类都必须添加创建者 冲突规则
2.所有的抽象方法必须用Javadoc注释 删除规则,因为规则2不强制,并入规则1
4.方法内部单行注释,使用//注释 删除规则,区别不大不强求
5. 所有的枚举类型字段必须要有注释 删除规则,因为规则2不强制

(四) 方法设计


(五) 类设计

对应 阿里规范《OOP规范》一章

VIP 规范 阿里规范 修改
2.减少类之间的依赖 增加规则
3.定义变量与方法参数时,尽量使用接口 增加规则
4.类的长度度量 增加规则
5.Builder模式 增加规则
8.静态方法不能被覆写 增加规则
9.静态方法的访问原则 扩写规则
10.内部类原则 增加规则
12-14.hashCode,equals,toString的规则 增加规则
16.总是移除无用属性、方法与参数 增加规则
18.【推荐】得墨忒耳法则 增加规则
3. 提倡同学们尽量不用可变参数编程 删除规则
9. 定义DO/DTO/VO等POJO类时,不要设定任何属性默认值 删除规则
10. 序列化类新增属性时,请不要修改serialVersionUID字段 删除规则
13. 使用索引访问用String的split方法时 删除规则
19. 慎用Object的clone方法来拷贝对象 删除规则
规则4,5 移到《方法规约》
规则6 移到《通用设计》
规则7,8,17 移到《基础类型》
规则14,15 移到《格式规约》

(六) 控制语句

对应 阿里规范《控制语句》一章

VIP 规范 阿里规范 修改
4.布尔表达式中的运算符个数不超过4个 扩写规则
5.善用三目运算符 增加规则
6.能造成短路概率较大的逻辑放前面 增加规则
10.能用while循环实现的代码,就不用do-while循环 增加规则
3. 在高并发场景中,避免使用 ”等于”作为条件 删除规则
8. 接口入参保护 删除规则
9. 下列情形,需要进行参数校验 移到《方法规约》
10. 下列情形,不需要进行参数校 移到《方法规约》

(七) 基本类型与字符串


(八) 集合处理

对应 阿里规范《集合处理》一章

VIP 规范 阿里规范 修改
2. foreach语法遍历 增加规则
7. 长生命周期的集合 增加规则
8. 并发集合 增加规则
9. 泛型的通配符 增加规则
10. List, List<?>List<Object>的选择 增加规则
11. EnumMap 增加规则
2. ArrayList的subList结果 删除规则
6. 泛型通配符 删除规则
12.合理利用好集合的有序性 删除规则
13.利用Set元素唯一的特性 删除规则
12.Array 与 List互转的 使用集合转数组的方法,必须使用集合的toArray 某位老大的测试,new String[0]也不错

(九) 并发处理: 并发与多线程

对应 阿里规范《并发处理》一章

VIP 规范 阿里规范 修改
1. 指定线程名 扩写规则
4. 正确停止线程 扩写规则
5. 编写可中断的Runnable 增加规则
6. Runnable中必须捕获一切异常 9.多线程并行处理定时任务 扩写规则
7. 全局变量的线程安全 扩写规则
10. 选择分离锁, 分散锁甚至无锁的数据结构 增加规则
13. volatile修饰符,AtomicXX系列的正确使用 扩写规则
8.并发修改同一记录时,需要加锁 删除规则
10.使用CountDownLatch进行异步转同步操作 删除规则
14.HashMap在容量不够进行resize 移到《集合规约》一章
14. 延时初始化的正确写法 12.双重检查锁 冲突规则

(十) 异常处理

对应 阿里规范《异常处理》一章

VIP 规范 阿里规范 修改
2.在特定场合,避免每次构造异常 增加规则
5.异常抛出的原则 增加规则
6.异常捕获的原则 增加规则
7.异常处理的原则 增加规则
8.捕获异常与抛异常,必须是完全匹配 删除规则
12.对于公司外的开放接口必须使用“错误码” 删除规则
13.DRY原则 删除规则,为什么会出现在这章,太著名了
9.返回值可以为null 移到《方法设计》一章
10. 【推荐】防止NPE,是程序员的基本修养 拆开到各章
11.避免直接抛出RuntimeException 规则冲突

(十一) 日志规约

对应 阿里规范《日志规约》一章

VIP 规范 阿里规范 修改
4.尽量使用异步日志 增加规则
5.禁止使用System.out() 增加规则
6.禁止配置日志框架打印日志打印时的类名,行号等信息 增加规则
2.日志文件推荐至少保存15天 删除规则
3.应用中的扩展日志命名方式 删除规则
6.异常信息应该包括两类信息 移到《异常处理》
2.合理使用使用占位符 4.对trace/debug/info级别的日志使用占位符 还是要判断日志是否必然输出,
并强调条件判断与占位符之间的差别

(十二) 其他规约

保留 阿里规范《常量定义》一章的规则1

VIP 规范 阿里规范 修改
规则2-4 删除规则
规则5. 如果变量值仅在一个固定范围内变化用enum类型来定义 移到《基本类型》

保留 阿里规范《其他》一章的规则7

VIP 规范 阿里规范 修改
规则2-4,6-8 删除规则
规则1. 在使用正则表达式时,利用好其预编译功 移到《基本类型》
  • 规则3,4,5,6,7均为新增规则