effective java 4장 클래스와 인터페이스 정리

·2024년 10월 24일

effectivejava

목록 보기
3/4

4장을 읽고 1~2줄로 정리해보는 연습을 하고있다.
이펙티브 4장부터는 이렇게 기록으로 남겨보기로했다.

  • 클래스와 멤버의 접근 제한을 최소화 하라
    • 정보 은닉을 통해 모듈간 결합도를 낮추고 각 모듈이 독립적으로 동작할 수 있도록 하라
  • public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라
    • 캡슐화를 통해 외부의 직접 접근을 막고 간접적으로 접근하여 상태를 읽거나 변경할 수있도록 한다.
  • 변경 가능성을 최소화 하라
    • 클래스나 필드를 불변으로 선언하고 객체의 안정성을 높이자, 하지만 불변을 강제할 수 없으므로 가변 클래스에서는 변경 가능 필드를 제외하고 불변 필드로 만들어서 변경을 최소화 한다.
  • 상속보다 컴포지션을 사용하라
    • 하위클래스가 상위클래스의 모든 동작이 필요한 경우는 상속을 사용하되 그렇지 않는 경우는 컴포지션을 사용하여 캡슐화를 유지하고 유연하게 설계해야한다.
  • 상속을 고려해 설계하고 문서화하라. 그러지 않았다면 상속을 금지하라
    • 상속을 허용하는 클래스는 명확하게 문서화하며, 상속을 허용하지 않는 경우 불필요한 확장성을 주지않는다.
  • 추상 클래스보다 인터페이스를 우선하라
    • 인터페이스를 사용하면 확장성과 재사용성을 높일 수 있으므로 가능하면 인터페이스를 우선시한다.
  • 인터페이스는 구현하는 쪽을 생각해 설계하라
    • 인터페이스는 한 번 릴리즈된 후 오래 유지되어야해서 신중하게 설계하고 구현하는 쪽에서 문제 없이 사용할 수있도록 설계시에 신중하게 설계해야한다
  • 인터페이스는 타입을 정의하는 용도로만 사용하라
    • 인터페이스는 타입을 정의하는 용도로만 사용하며, 상수 정의 용도로 사용하지 말고, 내부적으로 사용하는 코드는 외부에 노출하지 않도록 해야 한다.
  • 태그 달린 클래스보다는 클래스 계층 구조를 활용하라
    • 기능에 따라 역할을 명확히 분리하고, 태그 필드 대신 클래스 계층 구조를 활용해 확장과 재사용이 가능한 구조로 설계해야한다.
  • 멤버 클래스는 되도록 static으로 만들어라
    • 멤버 클래스는 외부 클래스의 인스턴스에 대한 불필요한 참조를 피하기 위해 가능하면 static으로 선언하고, 필요한 경우에는 접근자 메서드를 통해 접근해야한다.
  • 톱레벨 클래스는 한 파일에 하나만 담으라
    • 한 파일에 하나의 톱레벨 클래스를 담아 유지보수성을 높이고, 컴파일 및 실행 시 발생할 수 있는 문제를 방지하라. 관련된 클래스가 필요하다면 중첩 클래스를 고려해야한다.

전반적으로 코드 재사용 및 유연한 설계를 지향하고 있다라는 내용으로 정리하였다.

0개의 댓글