아이템 43: API의 필수적이지 않는 부분을 확장 함수로 추출하라

이펙티브 코틀린(클래스설계)

아이템 43: API의 필수적이지 않는 부분을 확장 함수로 추출하라

클래스 메서드를 정의할때 멤버로 정의할 것인지 확장 함수로 정의할 것인지 결정해야 된다

맴버와 확장 방식의 차이점

  • 따로 가져와서 사용해야 된다 일반적으로 확장은 다른 패키지에 위치한다
  • 확장은 우리가 직접 멤버를 추가할 수 없는 경우 데이터와 행위를 분리하도록 설계된 프로젝트에서 사용된다.
  • 임포트 해서 사용한다는 특징 덕분에 확장은 같은 타입에 같은 이름으로 여러개를 만들수 있다
  • 확장은 가상(virtual)이 아니다 파생 클래스에서 오버라이드 할수 없다
  • 확장은 클래스가 아니라 타입에 만들어진다
  • 확장은 클래스 레퍼런스에 나오지 않는다

참조