본문 바로가기

Language/Java Plus

Effective JAVA - Item16 : public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라.

 

 

 

 

// 1. public 클래스라면 private 멤버와 각 멤버의 접근자(getter/setter)를 제공하는 것이 맞음
// 2. package-private 클래스나 private 중첩클래스(클래스 내부 클래스)는 데이터 필드 public 가능
// - 다만, 그 클래스가 표현하려고 하는 추상 개념은 올바르게 표현해야 함.
// - 클래스 선언, 클라이언트 코드 등 훨씬 깔끔하다.
// - "package 내부에서만 사용하는 클래스라면 웬만하면 package-private로 사용하자"
// 3. 클래스의 public 필드가 불변이라도 public 선언은 좋은 방법은 아니다.

// 결론 : public 클래스는 절대 가변 필드 노출 x, 불변 필드라면 노출을 생각해볼 수 있지만 안전하진 않다.
// package-private이나 private 중첩 클래스는 노출하는게 나을 때도 있다.

 

 

개인적인 견해로는 앞장과 더불어 정보은닉화에 대해 자세히 설명을 하고 있다. 

정보 은닉화를 하는 이유를 살펴보면 가장 기본적인 이유는 '클라이언트가 API를 통해서 JAR 파일을 사용할 때, 내부에 관심을 줄여 오로지 사용에만 집중'하게 하는 측면이 큰 것 같다. 그리고 해당 책에서는 예외에 대해서 설명하고 이 예외 이외에는 노출을 최소화하는 것이 최선임을 설명하고 있다.

 

 

 

 

코드

https://github.com/mokjaemin/EffectiveJAVA

 

GitHub - mokjaemin/EffectiveJAVA: Study Files Of Effective JAVA

Study Files Of Effective JAVA. Contribute to mokjaemin/EffectiveJAVA development by creating an account on GitHub.

github.com