读阿里巴巴泰山版《java开发手册》总结
Posted wushenjiang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读阿里巴巴泰山版《java开发手册》总结相关的知识,希望对你有一定的参考价值。
写在前面
这是上一篇博客的续,这几天略闲,又往后看了几页。做一下总结。
这里是上一篇博客
代码规范篇
OOP规约
- 1.【强制】避免通过一个类的对象引用访问此类的静态变量或静态方法,直接通过类名访问即可。
- 2.【强制】所有的覆写方法,必须加@Override注解
- 3.【强制】相同参数类型,相同业务含义,才可以使用Java的可变参数,避免使用Object(说明:提倡尽量不用可变参数编程)
- 4.【强制】不能使用过时的类或方法
- 5.【强制】Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用equals
- 6.【强制】所有整型包装类之间的值的比较,全部用equals方法比较。
- 7.【强制】浮点数之间的等值判断,基本数据类型不同用==来比较,包装类型不能用equals来判断
- 8.【强制】定义数据对象DO类时,属性类型要和数据库字段类型相匹配
- 9.【强制】所有的POJO类属性必须使用包装数据类型
- 10.【强制】定义DO/DTO/VO等POJO类时,不要设定任何属性默认值
- 11.【强制】 POJO类方法必须写toString方法
- 12.【推荐】 setter方法中,参数名称与类成员变量名称一致。
- 13.【推荐】 循环体内字符串连接使用StringBuilder的append方法进行扩展。
- 14.【推荐】 慎用Object的clone方法来拷贝对象。
日期时间
- 1.【强制】 日期格式化时,传入pattern中表示年份统一使用小写的y
- 2.【强制】 在日期格式中分清楚大写的M和小写的m,大写的H和小写的h分别指代的意义
1) 表示月份是大写的 M;
2) 表示分钟则是小写的 m;
3) 24 小时制的是大写的 H;
4) 12 小时制的则是小写的 h。 - 3.【强制】 获取当前毫秒数:System.currentTimeMills();而不是new Date().getTime();
- 4.【强制】 不允许在程序任何地方使用 1)java.sql.Date 2)java.sql.Time 3) java.sql.Timestamp.
- 5.【强制】 不要在程序中写死一年为365天,避免在公历闰年出现日期转换错误。
- 6.【推荐】 使用枚举值来指代月份
集合处理
- 1.【强制】 关于hashCode和equals的处理,遵循如下规则:
1) 只要重写 equals,就必须重写 hashCode。
2) 因为 Set 存储的是不重复的对象,依据 hashCode 和 equals 进行判断,所以 Set 存储的对象必须重写
这两个方法。
3) 如果自定义对象作为 Map 的键,那么必须覆写 hashCode 和 equals。
说明:String 因为重写了 hashCode 和 equals 方法,所以我们可以愉快地使用 String 对象作为 key 来使用。 - 2.【强制】 判断所有集合内部的元素是否为空,使用isEmpty()方法,而不是size()==0的
- 3.【强制】 ArrayList的subList结果不可强转成ArrayList.
- 4.【强制】 使用Map的方法keySet()/values()/entrySet()返回集合对象时,不可以对其进行添加元素操作。
- 5.【强制】 Collections类返回的对象,不可对其进行添加或者删除元素的操作。
- 6.【强制】 使用集合转数组的方法,必须使用集合的toArray(T[] array),传入的是类型完全一致,长度为0的空数组。
- 7.【强制】 使用工具类Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法。
- 8.【强制】 不要在foreach循环里进行元素的remove/add操作。remove元素请使用Iterator方式,如果并发操作,需要对Iterator对象加锁。
- 9.【推荐】 集合泛型定义时,在JDK7及以上,使用diamond(菱形泛型,即直接使用<>来指代前面已经指定的类型).
- 10.【推荐】 集合初始化时,指定集合初始值的大小。
总结
今天就先看到这里了。接下来的改日再看。
以上是关于读阿里巴巴泰山版《java开发手册》总结的主要内容,如果未能解决你的问题,请参考以下文章