인프런 커뮤니티 질문&답변

hoonti06님의 프로필 이미지
hoonti06

작성한 질문수

Readable Code: 읽기 좋은 코드를 작성하는 사고법

CellSnapshotStatus 새 타입 추가로 인한 CellSignProvider 대응이 필요하다는 걸 컴파일 타임에 알 수 있을까요?

작성

·

67

0

안녕하세요! 강의 잘 듣고 있습니다!
그리고 '다형성 활용하기' 챕터에서 enum의 interface 구현에 대해 새롭게 알게 되어 좋았습니다!

그런데, 궁금한 점이 생겨 이렇게 문의하게 되었습니다.

바로 CellSnapshotStatus enumCellSignProvidable 인터페이스를 구현한 CellSignProvider enum 사이의 관계입니다.

 

CellSnapshotStatus에 새로운 타입(e.g. STAR)을 추가하게 되었을 때, 개발자가 CellSignProvider에 대해서도 알고 있어야 CellSignProvider에도 새로운 타입(STAR)에 대한 대응을 할 수 있을 것 같은데요

CellSnapshotStatus에 새로운 타입이 추가되면 CellSignProvider에도 이에 대한 대응이 필요하다는 것을 컴파일 타임에 알 수 있는 방법이 있을까요?


답변 1

1

박우빈님의 프로필 이미지
박우빈
지식공유자

안녕하세요, hoonti06 님!

좋은 질문이네요!

이런 경우 컴파일 타임에 알 수 있게 하기란 조금 어려운 일일 것 같은데요. (자바가 아니라 코틀린이었으면, when 키워드를 사용해서 컴파일이 깨지도록 구성할 수 있긴 합니다.)
그래서 저는 모든 Enum을 대상으로 테스트 코드를 작성하고, 새로운 Enum이 추가되었을 때 테스트 코드가 깨지도록 (신규 Enum에 대한 대응이 없으므로) 구성하는 편입니다.
컴파일 타임에는 알 수 없어도, 테스트 시점에 알 수 있도록 하는 것이죠.

도움이 되셨기를 바랍니다.
감사합니다. 🙂

hoonti06님의 프로필 이미지
hoonti06

작성한 질문수

질문하기