리뷰: The Art of Readable Code

“어떻게 하면 읽기 쉬운 (=이해하기 쉬운) 코드를 짤 것인가"에 관한 책. 아주 짧은 에세이 몇 편이라고 생각하면 된다. 180 페이지 정도 밖에 안됨…

크게 세 가지 주제를 다룬다:

  1. 표면적인 것 개선하기 (Surface-level improvements): 변수 명 짓기, 코멘트 달기/달지 말기,
  2. 반복문과 로직 단순하게 만들기 (Simplifying loops and logic): 읽기 쉬운 구조로 짜기; 중간 변수 뽑기; 거대한 expression쪼개기 등등
  3. 코드 재조직하기 (Reorganizing your code): 리팩터링에 가까운 이야기들; 한 번에 하나의 일만 하게 코드 뽑아내기 등등
  4. (덤. 추가 주제; 테스팅만 다룸)

대략 이런 예제들이 나온다 ((예제는 C++, JavaScript, Python, Java(?) 위주; 어려운 문법은 안 나옴)) :

pp. 78 – 79 의 중첩된 루프 제거하기:

for (int i = 0; i < results.size(); i++) {
    if (results[i] != NULL) {
        non_null_count++;
        if (results[i]->name != "") {
            cout << "Considering candidate…" << endl;
            // …
        }
    }
}

를 이렇게 바꾼다:

for (int i = 0; i < results.size(); i++) {
    if (results[i] == NULL) continue;
    non_null_count++;
    if (results[i]->name == "") continue;
    cout << "Considering candidate…" << endl;
    // …
}

뭐 이렇게 간단한 거 말고도 리팩터링 책에서 말하는 메서드/멤버 함수 뽑아내기, 한 메서드/멤버 함수에서 한 가지 일만 하기 등등 같은 것도 다룬다.

엄청 큰 내용을 다루는 것은 아니지만,

  1. 읽기 쉬운 코드에 대한 (저자 주관이 담겨있지만) 개념 정리
  2. 간단한 실례들.
  3. 적당한 follow-up 글/책을 알려줌

정도가 있으니 어느 정도 “읽기 좋은 코드"에 신경을 쓰게 될 것 같고, 이 이후에 따라가기도 편한 듯 싶다.

게다가 챕터 구성이 처세술 책 같다 – 이거 칭찬임; 중요한 내용을 서두에 던지고, 설명하고, 요약하는 구성을 사용하기 때문에 머리에 잘 남는다.

ps. 정작 이 책을 읽었으면 하는 사람들은 안 읽을 거 같다.