Effective Java | #16. public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라

보람·2022년 5월 8일
0

Effective-Java

목록 보기
16/25

public 클래스

class PointT {
    public double x;
    public double y;
}

데이터 필드에 직접 접근할 수 있어 캡슐화(item-15)의 이점을 제공하지 못해서 아주 좋지 않다.

위 public 클래스는 private 필드 + public 게터&세터를 추가하는 것이 좋다.

package-private or private 중첩 클래스

  • 데이터 필드를 노출한다 해도 문제 X
  • 해당 필드는 외부에서 접근할 수 없으며 오직 패키지 내부 혹은 외부 클래스에서만 접근 가능하기 때문

public 클래스, public final

  • 좋을까? API를 변경하지 않고는 표현 방식을 바꿀 수 없고, 필드를 읽을 때 부수 작업을 수행할 수 없다는 단점은 여전하다.

핵심 정리

public 클래스는 절대 가변 필드를 직접 노출해서는 안 된다. 불변 필드라면 노출해도 덜 위험하지만 완전히 안심할 수는 없다. 하지만 package-private 클래스나 private 중첩 클래스에서는 종종 (불변이든 가변이든) 필드를 노출하는 편이 나을 때도 있다.

profile
백엔드 개발자

0개의 댓글