提示十五
2022-05-30 本文已影响0人
飞絮搅青冥
今天来看提示十五:使类和成员的可访问性最小化。
- 软件设计的基本原则之一:信息隐藏或封装,一个设计良好的组件隐藏了它的所有实现细节,干净地将它的 API 与它的实现分离开来。然后,组件只通过它们的 API 进行通信,并且对彼此的内部工作一无所知。
- 经验法则很简单:让每个类或成员尽可能地不可访问。 正确使用修饰符对信息隐藏很重要。
- 对于顶层(非嵌套)的类和接口,只有两种可能的访问级别:包级私有(package private)和公有(public)。
- 如果一个包级私有的顶层类(或接口)只是在某一个类的内部被用到, 就应该考虑使它成为那个类的私有嵌套类。
- 为了测试将公共类的私有成员指定为包级私有是可以接受的,但是提高到更高的访问级别却是不可接受的。
- 带有公共可变字段的类通常不是线程安全的。
- 非零长度的数组总是可变的,所以类具有公共静态 final 数组字段,或返回这样一个字段的访问器是错误的。
我们系统中对于这一点好像没有特别重视,基本只有一些接口的abstract方法会被置为protected,其他地方则大都直接public,没有控制过这些权限。我感觉可能和我们系统一直是内部人员开发,打包以后不需要发布给公众有关。所以我们在访问控制这一块就没有太多的注意。如果我们从事的是开源的项目,代码可能会被无数人查看修改,那么恰当的访问控制应该可以帮助我们减少很多麻烦,也能帮助阅读代码的其他人减轻很多负担。