아이템 13. Unit?을 리턴하지 말라

아이템 13. Unit?을 리턴하지 말라

Unit? 을 리턴하지 말라 #

fun keyIsCorrect(key: String): Boolean = //...

if(!keyIsCorrect(key)) {
    // 로직
}
fun keyIsCorrect(key: String): Unit? = //...

keyIsCorrect(key) ?: // 로직

위 코드를 보면, Unit? 의 경우에도 ?:, ?.let 등을 활용해 Boolean 처럼 쓸 수 있다.

하지만 이 형태는 좋지 않다. 예측하기 어려운 오류를 만들어 낼 수 있다.


예시

getData()?.let { view.showData(it) } 
        ?: view.showError()

위 코드에서 getData 가 null 이 아니고, showData(it)가 null 인 상황이면 showData, showError 가 모두 호출된다. (= 예측하기 어려운 코드다.)

" Unit?을 쉽게 읽을 수 있는 경우는 거의 보지 못했다. “


요약 #

  • Unit? 사용보다 Boolean 사용하는 형태로 변경하는 것이 좋다.
  • Unit? 을 리턴하거나, 이를 기반으로 연산하지 않는 것이 좋다.