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
'코틀린 스터디 > 이펙티브 코틀린' 카테고리의 다른 글
아이템15) 리시버를 명시적으로 참조하라 (0) | 2024.03.19 |
---|---|
아이템14) 변수 타입이 명확하지 않은 경우 확실하게 지정하라 (0) | 2024.03.19 |
아이템12) 연산자 오버로드를 할 때는 의미에 맞게 사용하라 (0) | 2024.03.08 |
아이템11) 가독성을 목표로 설계하라 (0) | 2024.03.05 |
아이템10) 단위 테스트를 만들어라 (1) | 2024.02.29 |