5. OOP 规约
1.【强制】 避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。
2.【强制】 构造方法里面禁止加入任何业务逻辑,如果有初始化逻辑,请放在 init 方法中。
3.【推荐】 类内方法定义顺序依次是:公有方法或保护方法 > 私有方法 > getter / setter方法。
说明:公有方法是类的调用者和维护者最关心的方法,首屏展示最好 ; 保护方法虽然只是子类关心,也可能是“模板设计模式”下的核心方法 ; 而私有方法外部一般不需要特别关心,是一个黑盒实现 ; 因为方法信息价值较低,所有 Service 和 DAO 的 getter / setter 方法放在类体最后。
4.【推荐】 setter 方法中,参数名称与类成员变量名称一致, this.成员名 = 参数名。
5.【推荐】 类成员与方法访问控制从严:
1 ) 如果不允许外部直接通过 new 来创建对象,那么构造方法必须是 private。
2 ) 工具类不允许有 public 或 default 构造方法。
3 ) 类非 static 成员变量并且与子类共享,必须是 protected。
4 ) 类非 static 成员变量并且仅在本类使用,必须是 private。
5 ) 类 static 成员变量如果仅在本类使用,必须是 private。
6 ) 若是 static 成员变量,必须考虑是否为 final。
7 ) 类成员方法只供类内部调用,必须是 private。
8 ) 类成员方法只对继承类公开,那么限制为 protected。
说明:任何类、方法、参数、变量,严控访问范围。过宽泛的访问范围,不利于模块解耦。
思考:如果是一个 private 的方法,想删除就删除,可是一个 public 的 Service 方法,或者一 个 public 的成员变量,删除一下,不得手心冒点汗吗?变量像自己的小孩,尽量在自己的视线内,变量作用域太大,如果无限制的到处跑,那么你会担心的。