Effective Java 13 Minimize the accessibility of classes and members
Information hiding is important for many reasons, most of which stem from the fact that it decouples the modules that comprise a system, allowing them to be developed, tested, optimized, used, understood, and modified in isolation.
Advantage
- Speeds up system development by parallel programming.
- Eases the burden of maintenance.
- Enables effective performance tuning.
- Increases software reuse.
- Decreases the risk in building large system.
Principle
- make each class or member as inaccessible as possible.
Possible access levels for top level classes
Package-private
Public
For members (fields, methods, nested classes, and nested interfaces), there are four possible access levels, listed here in order of increasing accessibility:
? private—The member is accessible only from the top-level class where it is declared.
? package-private—The member is accessible from any class in the package where it is declared. Technically known as default access, this is the access level you get if no access modifier is specified.
? protected—The member is accessible from subclasses of the class where it is declared (subject to a few restrictions [JLS, 6.6.2]) and from any class in the package where it is declared.
? public—The member is accessible from anywhere.
2. Instance fields should never be public.
3. Classes with public mutable fields are not thread-safe.
4. It is wrong for a class to have a public static final array field, or an accessor that returns such a field.
a. make the public array private and add a public immutable list:
private static final Thing[] PRIVATE_VALUES = { ... };
public static final List<Thing> VALUES = Collections.unmodifiableList(Arrays.asList(PRIVATE_VALUES));
b. make the array private and add a public method that returns a copy of a private array:
private static final Thing[] PRIVATE_VALUES = { ... };
public static final Thing[] values() {
return PRIVATE_VALUES.clone();
}
Effective Java 13 Minimize the accessibility of classes and members,古老的榕树,5-wow.com
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。