이 책은... 매우 얇다. 그것이 장점이자 단점이다. 장점은 빠르게 읽을 수 있다는 것이고, 단점은 내용이 얕다는 것이다. 이 책을 집필한 켄트 백은 의심할 여지 없이 소프트웨어 업계에선 유명한 인물이다. 그의 저서인 익스트림 프로그래밍과 테스트 주도 개발은 많은 개발자들에게 영감을 주었고, 이 책도 그와 비슷한 영감을 주지 않을까 기대하면서 읽었다.
내용
켄트 백은 '괴짜들이 세상에서 안전하다고 느끼도록 돕는 일'이 자신의 개인적인 사명이라 한다. 그렇기 때문인지 이 책에선 안전하게 코딩하는 방법에 대해 다루고 그것을 Tidy First?, 정리를 할지 판단하는 것으로 가능하다고 주장한다.
책의 내용은 총 세 개 파트로 나뉘는데, 첫 파트는 코드 레벨에서 정리하는 방법을 다루고 있다. 유명한 Guard Clause 패턴이나 주석에 대한 자신의 견해, 여러 리팩토링 기법을 설명하며 지저분한 코드를 발견했다면 코드를 정리하라고 주장한다. 주로 리팩토링과 관련된 책에서 자주 볼 수 있는 내용이다.
두 번째 파트는 코드 정리를 언제 하면 좋을지, 설계에 대한 변경을 어떻게 정리할지에 대해 다루고 있다. 켄트 백의 경험에서 우러나오는 정리 시기와 자주 들을 수 있는 결합도와 응집도에 대한 설명을 볼 수 있다.
마지막 파트는 정리를 왜 해야하는가를 다룬다. 여기선 정리에 대한 이야기를 비용에 빗대서 설명하며 정리를 미룰수록 변화에 대응하는 비용이 증가할 수 있다고 주장한다. 이전에 마틴 파울러가 리팩토링의 중요성에 대해 경제성이 리팩토링을 해야하는 유일한 이유라고 말한 것이 생각났다.
좋았던 점과 아쉬운 점
좋은 점은 켄트 백이 오랫 동안 쌓아온 경험과 가치관을 매우 빠르게 읽을 수 있다는 점이다. 앉은 자리에서 다 읽고 한 번 더 회독하더라도 하루가 걸리지 않을 것이다.
아쉬운 점은 챕터마다 내용이 너무 빈약하다는 것이다. 예를 들어, 챕터 4, 새로운 인터페이스로 기존 루틴 부르기에서 통로 인터페이스pass-through interface라는 용어를 사용하는데, 여기서 말하는 인터페이스가 문법 상 인터페이스를 말하는지, 아니면 단순 함수 명세를 말하는지 알 수가 없다. 이런 부분이 아쉽다. 나만 이렇게 느낀 것이 아닌건지 이에 대해 질문하는 경우도 볼 수 있다.
마치며
조금 인상 깊었던 것은 Structured Design이라는 책이 여러 번 언급되는데, 이 책을 나도 읽었다는 점이다. 켄트 백이 느꼈던 점과 유사하게 기본은 정확하다라는 것을 느꼈다. 중요한 가치는 기술이 발전하고 여러 기교가 등장하더라도 변하지 않는다는 것이다.
이 책도 그러한 가치를 담고 있는 책이라고 생각한다. 정리를 먼저 해야하는 이유는 안전한 코딩을 위해서이며 그것은 경제성으로 이어진다는 것이 핵심이다. 이런 핵심은 소프트웨어를 제작해서 판매하는 사람이라면 누구나 인정할 수 밖에 없는 기본적인 가치다.