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? 을 리턴하거나, 이를 기반으로 연산하지 않는 것이 좋다.