[이펙티브 자바] 아이템 16 - public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라

enjoy89·2일 전
0

1. public 필드를 그대로 사용할 때의 문제점

  • 내부 표현을 바꾸기 어렵다
    • public 필드를 외부에서 직접 접근할 수 있게 하면, 클래스를 사용하는 모든 코드에서 해당 필드에 의존하게 되어, 그 필드의 구조나 이름을 바꾸기 어렵게 된다.
  • 데이터의 무결성 보장이 힘들다
    • 필드를 public으로 두면 외부에서 값을 수정할 수 있어 데이터의 일관성을 유지하기가 어려움
  • 필드 접근 시 부수 작업을 추가할 수 없다
    • 필드에 접근할 때 필요한 로직(예: 값 검증, 로그 기록 등)을 추가할 수 없기 때문에, 객체 지향적인 방식으로 확장성을 갖추기 어렵다.

2. 해결책: 필드는 private으로 두고 getter를 사용

  • 필드를 private으로 선언하고, getter 메서드를 통해 간접적으로 접근하게 만드는 것이 좋다.
  • getter 메서드에서는 필드의 값을 제공하면서, 필요한 부수 작업을 추가하거나, 추후 내부 구조를 변경할 여지도 남길 수 있다.

3. 불변 필드라면 공개해도 괜찮지만 주의가 필요

  • public으로 노출되는 필드가 불변(fianl)이라면 상대적으로 안전하다. 그래도 완전한 안전을 보장하는 것은 아니므로 되도록 권장되지 않는다.

4. 예외: package-private 클래스나 private 중첩 클래스

  • package-private 클래스나 private 중첩 클래스에서만 사용할 때는 필요한 경우 public 필드를 사용할 수 있다.
  • 이 경우 외부에서 접근할 수 없고, 클래스 내부에서만 사용할 것이기 때문에 필드 공개로 인한 위험성이 줄어든다.
profile
Backend Developer 💻 😺
post-custom-banner

0개의 댓글