[이펙티브 자바] 아이템 15 - 클래스와 멤버의 접근 권한을 최소화하라

enjoy89·2일 전
0

정보 은닉(캡슐화)의 중요성

  • 잘 설계된 컴포넌트는 내부 구현을 완벽히 숨겨 외부에서 접근할 수 없게 하고, API를 통해서만 소통하게 한다.
  • 장점:
    • 개발 속도 향상: 병렬로 개발이 가능
    • 유지보수 비용 절감: 컴포넌트를 빠르게 이해하고 교체 부담이 적음
    • 성능 최적화 용이: 특정 컴포넌트만 독립적으로 최적화 가능
    • 재사용성 향상: 독립적으로 동작하는 컴포넌트는 다양한 환경에서도 재사용 가능
  1. 접근 제한자 및 접근성 원칙
  • 접근 제한자는 클래스의 내부 정보 노출을 줄이는 데 필수적
    • private: 해당 클래스 내부에서만 접근 가능
    • package-private (기본 접근 수준): 같은 패키지 내에서 접근 가능
    • protected: 패키지 내와 하위 클래스에서 접근 가능
    • public: 모든 클래스에서 접근 가능
  • 상속 시 접근 제한 규칙:
    • 하위 클래스는 상위 클래스에서 정의한 메서드의 접근 수준을 좁힐 수 없음. 이는 리스코프 치환 원칙을 따르기 위함이다.
  1. 테스트 시 접근 범위
  • 테스트 목적으로 접근 범위를 넓히는 것은 가급적 필요한 최소한의 수준으로 한다.
  1. Public 필드 사용에 대한 주의사항
  • public 인스턴스 필드는 피하는 것이 좋음
    • 이유: 불변성을 해치고, 필드 변경 시 동기화 등의 추가 작업이 불가능하여 스레드 안전을 확보하기 어려움
  • 예외: public static final 상수 필드는 가능하나, 참조하는 객체가 불변인지 확인이 필요
profile
Backend Developer 💻 😺
post-custom-banner

0개의 댓글