《码出高效》,码出质量:云栖大会的阿里Java开发手册pdf最新版正式发布!

"这是凝聚了阿里众多Java开发人员多年经验的Java开发手册,强烈推荐Java程序员们看看,里面的很多规则甚至是多次惨痛的故障经验才形成的,另外在规则上诸如空格,命名等规范,很容易形成争论,但对于一家公司而言,最重要的是要有统一规范(所以有些时候没必要太纠结),对于代码的可读性和可维护性来说会有巨大帮助。" 

总之话不多说,学了至少能懂得Java的规则。一种传统。

最新完整版pdf点击可以下载。

链接:https://pan.baidu.com/s/1g9FUmcjvUzT9jJI_4b7IAA 密码:29cc

 

总结:

OOP规约

  1、所有的覆写方法,必须加@override注解

  2、不能使用过时的类

  3、所有的POJO类属性必须使用包装数据类型(null)

    不用设定默认值,getter/setter不要加逻辑

  4、序列化类新增属性时,请不要修改serialVersionUID

  5、声明final的情况:

    a、不需要重新赋值的变量

    b、对象参数不允许修改指向

    c、类方法不允许被重写

  6、对象的clone方法默认是浅拷贝

    浅拷贝:只复制一个对象,对象内部存在的指向其他对象数组或者引用则不复制

    深拷贝:对象,对象内部的引用均复制

集合处理

  1、必须重写equals和hashCode:a、set存储的对象 b、自定义对象作为map的键

  2、array = list.toArray(new T[list.size()])

  3、不要在foreach循环里进行元素的remove和add操作,remove请用Iterator

  4、如果倒序的遍历,中间即使有删除也不会漏掉元素

  5、集合初始化时,尽量指定集合初始值大小

  6、使用entrySet遍历Map类集合KV,keySet其实是遍历了两次,一次是转为Iterator,一次是从hashMap取值??

并发处理

  1、创建线程(池)时,请指定有意义的线程名称

  2、线程池不允许使用Executors去创建,通过ThreadPoolExecutor

  3、使用ThreadLocal代替原来的new SimpleDateFormat

private static final ThreadLocal<SimpleDateFormat> dateFormatter = new ThreadLocal<SimpleDateFormat>(){
  @Override
  protected SimpleDateFormat initialValue() {
    return new SimpleDateFormat("yyyy-MM-dd");
  }
};

  4、能用对象锁,不要用类锁

  5、Timer运行多个TimeTask时,只要一个没捕获异常,其它任务便会自行终止,使用ScheduledExecutorService

  6、HashMap在容量不够时进行resize,由于高并发可能出现死链,导致CPU飙升

其它

  1、POJO类中布尔类型的变量,都不要加is

  2、枚举类构造方法被默认强制是私有

  3、POJO是DO/DTO/BO/VO的统称,禁止命名成xxxPOJO

  4、运算符与下文一起换行

  5、逻辑超过三层的,状态模式实现

  6、try-with-resources都是一个能够确保资源能被正确地关闭的强大方法(JDK7)

  7、不能在finally块中使用return

  8、日志使用占位符

    logger.debug("Processing trade with id:{} symbol:{}", id, symbol)

猜你喜欢

转载自blog.csdn.net/Isaac8/article/details/82818770