读阿里巴巴泰山版《java开发手册》总结(2)

写在前面

这是上一篇博客的续,这几天略闲,又往后看了几页。做一下总结。
这里是上一篇博客

代码规范篇

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.【推荐】 集合初始化时,指定集合初始值的大小。

总结

今天就先看到这里了。接下来的改日再看。

猜你喜欢

转载自www.cnblogs.com/wushenjiang/p/12891302.html