이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서
Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다.
#
어떤 멍청이도 컴퓨터가 이해할 수 있는 코드를 작성할 수 있다. 그러나 훌륭한 프로그래머는 사람이 이해할 수 있는 코드를 작성한다.
#
프로그래머들이 코드를 작성하는데 1분 쓴다면, 읽는데 10분을 사용한다는 통계가 있다.
프로그래밍은 대부분이 '쓰기' 보다는 대부분 '읽기' 라고 할 수 있다.
Reducing cognitive load
#
if (person != null && person.isAdult){
view.showPerson(person)
}else{
view.showError()
}
vs
person?.takeIf { it.isAdult }
?.let(view::showPerson)
?: view.showError()
#
코드 가독성은 우리가 얼마나 idiom 에 익숙한가에 달려 있다.
Kotlin expert 에게 위의 두 코드는 동일한 난이도로 익힐 수 있다.
하지만 Kotlin beginner 에게 두번째 코드는 퍼즐을 푸는 것일 수 있다.
모든 사람이 Kotlin 만 쓰는 것이 아니기 때문에 모든 언어에서 general 하게 받아들일 수 있는 첫번째 것이 가독성이 좋다고 말할 수 있겠다.
#
수정의 측면에서도 첫번째 것이 선호된다.
if (person != null && person.isAdult){
view.showPerson(person)
view.hideProgressWithSuccess()
} else{
view.showError()
view.hideProgress()
}
vs.
person?.takeIf { it.isAdult }
?.let{
view.showPerson(it)
view.hideProgressWithSucceess()
} ?: run {
view.showError()
view.hideProgress()
}
#
디버깅도 앞선 것이 더 쉽다.
#
덜 일반적이며, 더 창의적인 구조는 보통 유연성이 떨어지곤 한다.
예를 들어 if(person == null){ } 블락을 구분하고 싶다면, 첫번째 녀석은 if, else 분기만 하면 되지만, 2번째 것은 구조가 또 틀어진다.
#
여기서 잠깐!
심지어 2개의 동작은 다르다!!
#
더 적은 양의 코드도 좋다.
하지만 인지 부하(cognitive load)를 줄이기 위해 익숙하고 더 잘 읽히는 패턴, 구조를 사용하는 것이 좋다.
Do not get extreme
#
얼마나 balance 를 잘 이루는가가 art 이다.
Conventions
끝
'프로그래밍 놀이터 > Kotlin, Coroutine' 카테고리의 다른 글
[Effective Kotlin] Item 13 : Avoid returning or operating on Unit? (0) | 2022.03.10 |
---|---|
[Effective Kotlin] Item 12 : Operator meaning should be consistent with its function name (0) | 2022.03.09 |
[Effective Kotlin] Item 10 : Write unit tests (0) | 2022.03.07 |
[Effective Kotlin] Item 9 : Close resource with use (0) | 2022.03.06 |
[Effective Kotlin] Item 8 : Handle nulls properly (0) | 2022.03.05 |
댓글