아이템 11 - 가독성을 목표로 설계하라

ds_chanin

·

2022. 3. 25. 00:27


프로그래밍은 쓰기보다 읽기가 중요하다 고로 항상 가독성을 생각하면서 코드를 작성해야 한다.

그렇지 않으면 오류를 찾기위해 코드를 작성할 때보다 오랜 시간 코드를 읽는 자신을 발견할 수 있다.

개발자가 코드를 작성하는 데는 1분 걸리지만, 이를 읽는 데는 10분이 걸린다. by 로버트 마틴

인식 부하 감소

가독성이란 코드를 읽고 얼마나 빠르게 이해할 수 있는지를 의미한다.

경험과 인식에 대한 과학으로 만들어진 어느 정도의 규칙이 있다.

fun readGood(person: Person?, view: View) {
    if (person != null && person.isAdult) {
        view.showPersion(person)
    } else {
        view.showError()
    }
}

fun readBad(person: Person?, view: View) {
    person?.takeIf { it.isAdult }
        ?.let { view.showPersion(it) }
        ?: { view.showError() }
}

위 코드에서 readBad는 코틀린에 숙련된 개발자에게만 더 읽기 쉬운 코드라고 볼 수 있다. 또한 readGood 쪽이 수정(ex. 기능추가)하기 더 용이하다. 따라서 readGood이 더 좋다고 할 수 있다.

사용 빈도가 적은 관용구는 코드를 복잡하게 만든다. 그리고 그런 관용구를 한 문장에서 조합하여 사용하면 복잡성이 증가한다.

‘관용구를 안다’라는 인지부하를 줄이는 쪽으로 작성하도록 하자.

극단적이 되지 않기

인식 부하를 감소하기 위해 관용구를 줄이자고 했다고 해서 관용구를 사용하지 말자는 것이 아니다. 관용구를 적절하게 잘 사용하면 된다.

물론 적절하게 잘 사용한다는 부분은 항상 논란이 있을 수 있기 때문에 균형을 맞춰야한다. 이 부분은 팀에서 프로젝트를 같이 진행하는 사람들과 논의를 해야하지 않을까 싶다.

let은 다음과 같은 경우에 많이 사용한다.

  • 연산을 아규먼트 처리 후로 이동시킬 때
  • 데코레이터를 사용해서 객체를 랩할 때