只记录较大的改动,对更多条目内容的重新组织与扩写,则未一一冗述。
对应 阿里规范《命名风格》一章
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不强制 |
- 规则 6,7,12,13 从阿里规范《控制语句》一章 移入
- 规则 9 从阿里规范《异常处理》一章 移入
- 规则1,2,3,4,5,8,10,11,14为新建规则
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均为新增规则