[Effective Kotlin] 아이템 39. 태그 클래스보다는 클래스 계층을 사용하라

Jimin Lim·2023년 10월 29일
0

Effective Kotlin

목록 보기
39/39
post-thumbnail

아이템 39

태그 클래스보다는 클래스 계층을 사용하라

Tagged Class

: 상수 모드(Tag)를 포함한 클래스
tag에 따라 처리하는 클래스 같음

코틀린은 아래의 단점으로 인해 sealed 클래스를 많이 사용한다.

  1. 한 클래스에 여러 모드를 처리하기 위한 보일러플레이트가 추가된다
  2. 여러 목적으로 사용해야 하므로 프로퍼티가 일관적이지 않게 사용될 수 있으며 더 많은 프로퍼티가 필요하다.
  3. 해당 요소가 여러 방법으로 설정할 수 있는 경우에 상태의 일관성/정확성을 지키기 어렵다
  4. 팩토리 메서드를 사용해야하는 경우가 많다. 그렇지 않으면 객체가 제대로 생성되었는지 확인하기에 어렵다

sealed 한정자

외부 파일에서 서브클래스를 만드는 행위 자체를 제한하므로 타입이 추가되지 않을 것이 보장된다. 따라서 when을 사용할 때 else 브랜치가 필요없게 된다.

태그 클래스와 state pattern 차이

  • state pattern: 객체의 내부 상태가 변화될 때 객체의 동작이 변화하는 디자인 패턴
  1. 상태는 더 많은 책임을 가진 큰 클래스
  2. 상태는 변경 가능

정리

태그 클래스보단 타입 계층을 사용할 것, 타입 계층을 만들 땐 sealed 클래스 사용할 것

Reference

https://kotlinworld.com/165

profile
💻 ☕️ 🏝 🍑 🍹 🏊‍♀️

0개의 댓글