코틀린 스터디/이펙티브 코틀린

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

막이86 2024. 3. 12. 17:20
728x90

이펙티브 코루틴을 요약한 내용입니다

  • 함수에서 Unit?을 리턴한다면, 그 이유는 무엇일까요?
    • Boolean이 true또는 false를 갖는 것처럼, Unit?은 Unit 또는 null이라는 값을 가질 수 있음
    • Boolean과 Unit? 타입은 서로 바꿔서 사용할 수 있음
  • Boolean으로 사용한 코드
fun keyIsCorrect(key: String): Boolean = //...
if (!keyInCorrect(key)) return
  • Unit?으로 사용하는 경우
fun verifyKey(key: String): Unit? = //...
verifyKey(key) ?: return
  • 코드를 작성할 떄는 멋있게 보일 수도 있겠지만, 읽을 때는 그렇지 않음
  • Unit?으로 Boolean을 표현하는 것은 오해의 소지가 있으며, 예측하기 어려운 오류를 발생 할 수 있음
  • if-else 조건문을 사용하는 것이 이해하기 쉽고 깔끔함
if (person != null && person.isAdult) {
	view.showPerson(person)
} else {
	view.showError()
}
  • Unit을 쉽게 읽을 수 있는 경우는 거의 보지 못함
    • 오해를 불러 일으키기 쉬움
    if (!keyInCorrect(key)) return 
    verifyKey(key) ?: return 
    
  • Unit?보다는 Boolean을 사용하는 형태로 변경하는 것이 좋음
728x90