《阿里巴巴Java开发手册(终极版)》1-5之集合处理

编程规约 - 集合处理

修改项:第 9 项

  1. 【强制】关于 hashCode 和 equals 的处理,遵循如下规则:
    1) 只要重写 equals ,就必须重写 hashCode 。
    2) 因为 Set 存储的是不重复的对象,依据 hashCode 和 equals 进行判断,所以 Set 存储的
    对象必须重写这两个方法。
    3) 如果自定义对象做为 Map 的键,那么必须重写 hashCode 和 equals 。
    说明: String 重写了 hashCode 和 equals 方法,所以我们可以非常愉快地使用 String 对象
    作为 key 来使用。

  2. 【强制】 ArrayList 的 subList 结果不可强转成 ArrayList ,否则会抛出 ClassCastException
    异常: java . util . RandomAccessSubList cannot be cast to java . util . ArrayList ;
    说明: subList 返回的是 ArrayList 的内部类 SubList ,并不是 ArrayList ,而是
    ArrayList 的一个视图,对于 SubList 子列表的所有操作最终会反映到原列表上。

  3. 【强制】 在 subList 场景中,高度注意对原集合元素个数的修改,会导致子列表的遍历、增
    加、删除均产生 ConcurrentModificationException 异常。

《阿里巴巴Java开发手册(终极版)》1-4之OOP规约

编程规约 - OOP规约

修改项:第 17 项、第 18 项

  1. 【强制】避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成
    本,直接用类名来访问即可。

  2. 【强制】所有的覆写方法,必须加@ Override 注解。
    反例: getObject()get 0 bject() 的问题。一个是字母的 O ,一个是数字的 0,加@ Override
    可以准确判断是否覆盖成功。另外,如果在抽象类中对方法签名进行修改,其实现类会马上编
    译报错。

  3. 【强制】相同参数类型,相同业务含义,才可以使用 Java 的可变参数,避免使用 Object 。
    说明:可变参数必须放置在参数列表的最后。 ( 提倡同学们尽量不用可变参数编程 )
    正例:

    public User getUsers(String type, Integer... ids)

《阿里巴巴Java开发手册(终极版)》1-3之格式规约

编程规约 - 代码格式

修改项:第 2 项、第 4 项

新增项:第 6 项

  1. 【强制】大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行 ; 如果
    是非空代码块则:
    1 ) 左大括号前不换行。
    2 ) 左大括号后换行。
    3 ) 右大括号前换行。
    4 ) 右大括号后还有 else 等代码则不换行 ; 表示终止右大括号后必须换行。
  2. 【强制】 左小括号和字符之间不出现空格 ; 同样,右小括号和字符之间也不出现空格。详见
    第 5 条下方正例提示。
    反例: if (空格 a == b 空格)
  3. 【强制】 if / for / while / switch / do 等保留字与左右括号之间都必须加空格。

《阿里巴巴Java开发手册(终极版)》1-2之常量定义

编程规约 - 常量定义

修改:第 3 项、第 5 项

  1. 【强制】不允许出现任何魔法值 ( 即未经定义的常量 ) 直接出现在代码中。
    反例:

    String key =" Id # taobao _"+ tradeId;
    cache . put(key ,  value);
  2. 【强制】 long 或者 Long 初始赋值时,必须使用大写的 L ,不能是小写的 l ,小写容易跟数字
    1 混淆,造成误解。
    说明:

    Long a = 2 l; 

    写的是数字的 21,还是 Long 型的 2?

《阿里巴巴Java开发手册(终极版)》1-1之命名规范

编程规约 - 命名规约

修改项:第 3 项

添加项:第 11 项

  1. 【强制】 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。

    反例:

    _name / __name / $Object / name_ / name$ / Object$
  2. 【强制】 代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。
    说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式
    也要避免采用。
    反例:

     DaZhePromotion [ 打折 ] /  getPingfenByName() [ 评分 ] /  int 某变量 = 3

    正例:

     alibaba /  taobao /  youku /  hangzhou 等国际通用的名称,可视同英文。
| | 总字数统计:93.5k