728x90
반응형
오직 API를 통해서만 다른 컴포넌트와 소통하며 서로의 내부 동작 방식에는 전혀 개의치 않는다.
정보 은닉, 혹은 캡슐화라고 하는 이 개념은 소프트웨어 설계의 근간이 되는 원리이다.
⭐ 정보 은닉의 핵심 : 모든 클래스와 맴버의 접근성을 가능한 한 좁혀야 한다.
⭐ public
클래스의 인스턴스 필드는 되도록 public
이 아니어야 한다.
public class User {
private long userSn;
private String userId;
private String userPw;
}
⭐ public
가변 필드를 갖는 클래스는 일반적으로 스레드(멀티 스레드에) 안전하지 않다.
스레드 불안정 : 상태 제어가 잘못되면 프로그램은 불안정해져서 먹통이 되거나 다운되는것을 말한다.
⭐ 클래스에서 public static final
배열 필드를 두거나 이 필드를 반환하는 접근자 메서드를 제공해서는 안되다.
- 이전 코드
private static final Thing[] PRIVATE_VALUES = { ... }; public static final List<Thing> VALUES = Collections.unmodifiableList(Arrays.asList(PRIVATE_VALUES));
- 변경 후 코드
private static final Thing[] PRIVATE_VALUES = { ... }; public static final Thing[] values(){ return PRIVATE_VALUES.clone(); }
public
클래스는 상수용public static final
필드 외에는 어떠한public
필드도 가져서는 안된다.public static final
필드가 참조하는 객체가 불변인지 확인하라.
참고 자료
Joshua Bloch, 『Effective Java 3/E』, 개앞맵시 옮김, 프로그래밍인사이트(2018)
http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788966262281&orderClick=LEa&Kc=
728x90
반응형
'Java' 카테고리의 다른 글
[Effective Java] 아이템 17. 변경 가능성을 최소화하라. (0) | 2022.05.24 |
---|---|
[Effective Java] 아이템 16. public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라. (0) | 2022.05.24 |
[Effective Java] 아이템 14. Comparable을 구혈할지 고려하라. (0) | 2022.05.24 |
[Effective Java] 아이템 13. clone 재정의는 주의해서 진행하라. (0) | 2022.05.24 |
[Effective Java] 아이템 10. equals는 일반 규약을 지켜 재정의하라. (0) | 2022.05.24 |