《阿里开发手册》读书笔记(二)

4.10 10. 【强制】序列化类新增属性时,请不要修改 serialVersionUID 字段,避免反序列失败
果完全不兼容升级,避免反序列化混乱,那么请修改
serialVersionUID 值。

说明: 注意 serialVersionUID 不一致会抛出序列化运行时异常。


4.1111. 【强制】构造方法里面禁止加入任何业务逻辑,如果有初始化逻辑,请放在 init 方法中。


4.1212. 【强制】 POJO 类必须写 toString 方法。使用 IDE 的中工具: source> generate toString
时,如果继承了另一个 POJO 类,注意在前面加一下 super.toString
说明: 在方法执行抛出异常时,可以直接调用 POJO toString()方法打印其属性值,便于排
查问题。


4.1515. 【推荐】 类内方法定义顺序依次是:公有方法或保护方法 > 私有方法 > getter/setter
方法。
说明: 公有方法是类的调用者和维护者最关心的方法,首屏展示最好保护方法虽然只是子类
关心,也可能是
模板设计模式下的核心方法而私有方法外部一般不需要特别关心,是一个
黑盒实现
因为方法信息价值较低,所有 Service DAO getter/setter 方法放在类体最
后。


4.1616. 【推荐】 setter 方法中,参数名称与类成员变量名称一致, this.成员名=参数名。在
getter/setter 方法中,尽量不要增加业务逻辑,增加排查问题的难度。
反例:
public Integer getData(){
    if(true) {
        return data + 100;
    } else {
        return data - 100;
    }

}


4.1717. 【推荐】循环体内,字符串的联接方式,使用 StringBuilder append 方法进行扩展。
反例:
String str = "start";
for(int i=0; i<100; i++){
        str = str + "hello";
}
说明: 反编译出的字节码文件显示每次循环都会 new 出一个 StringBuilder 对象,然后进行

append 操作,最后通过 toString 方法返回 String 对象,造成内存资源浪费。


4.1818. 【推荐】 final 可提高程序响应效率,声明成 final 的情况:
1不需要重新赋值的变量,包括类属性、局部变量。
2对象参数前加 final,表示不允许修改引用的指向。
3类方法确定不允许被重写。


4.1919. 【推荐】慎用 Object clone 方法来拷贝对象。
说明: 对象的 clone 方法默认是浅拷贝,若想实现深拷贝需要重写 clone 方法实现属性对象
的拷贝。


4.2020. 【推荐】类成员与方法访问控制从严:
1如果不允许外部直接通过 new 来创建对象,那么构造方法必须
2工具类不允许有 public default 构造方法。
3类非 static 成员变量并且与子类共享,必须是 protected
4类非 static 成员变量并且仅在本类使用,必须是 private
5static 成员变量如果仅在本类使用,必须是 private
6若是 static 成员变量,必须考虑是否为 final
7类成员方法只供类内部调用,必须是 private
8类成员方法只对继承类公开,那么限制为 protected
说明: 任何类、方法、参数、变量,严控访问范围。过宽泛的访问范
考:如果是一个
private 的方法,想删除就删除,可是一个 public
public 的成员变量,删除一下,不得手心冒点汗吗?变量像自己
线内,变量作用域太大,如果无限制的到处跑,那么你会担心的。





猜你喜欢

转载自blog.csdn.net/weixin_36997847/article/details/80050671