관심있는 것들 정리
[리뷰] 실무로 통하는 클린 코드 본문
코딩을 처음배울 때는 내가 사용하는 언어의 문법을 배우는 데 바쁘고, 그 언어를 이용해 기능을 구현하는 것에 관심이 있어, 클린 코드라는 것을 들어도 귀에 들어오지 않는다. 이는 회사에 취직해서 회사의 플랫폼에 맞춰, 주어진 업무를 빠른 시간내에 구현하는 초기 개발자에게도 해당하는 이야기일 수 있다. 회사가 만드는 프로그램의 수명에 따라, 어떤 곳은 단품을 만들면 새로 코드를 만들어야 하고 어떤 곳은 10년이 지나도 동일한 코드 베이스에서 계속해서 기능 개발 및 버그 수정을 해야하는 곳이 있다. 후자의 경우, 시간이 지나면 지날 수록, 또 새로운 기능을 계속 개발하면 개발할 수록, 이전에 급한 일정때문에 기능에만 몰두해 개발한 코드는 부채처럼 나에게 계속 코드 관리의 어려움, 테스트의 어려움, 그리고 여기를 고치면 저기서 튀어나오는 버그들의 어려움으로 개발이 점점 더 어려워지게 된다.
이와 같은 경험은 크던 작던 수년 이상 개발을 업으로 하는 분들에게는 적어도 한번 이상 해 본 경험일 것이다. 시간이 지나고 좋은 프로그래머가 되면 이런 경험은 사라지지는 않지만 많이 줄어들 것이다. 그러면 좋은 프로그래머는 어떤 프로그래머인가? 이런 고민을 할 때 켄트 벡이나 엉클밥(로버트 C. 마틴)의 책들에서 하는 이야기에 대해 관심을 기울이게 된다.
엉클밥의 클린 코드를 읽었을 때 내심 공감이 되는 부분이 아주 많다. 그리고 책의 예제를 참조해서 이렇게 나도 코드에 적용해봐야지 하는 의욕도 넘치게 된다. 그런데, 클린 코드라는 것이 많은 경험을 통해 저자가 작성을 한 것이다보니, 저자의 의도를 이해했다 하더라도, 어떤 경우에 어떻게 사용해야하는 지, 막상 적용하려 했을 때 막막한 경우가 많이 있을 수 있다. “실무로 통하는 클린 코드”는 원제 그대로 Clean Code Cookbook 으로, 프로그래머들이 실제 프로그램을 작성하거나 오랜지시간 유지 보수를 하면서 마주하는 다양한 경우를 체계적으로 정리하고 그에 대한 해결책, 해결책의 의미를 다양한 언어를 이용하여 예시를 통해 설명을 하고 있다.
책은 다른 Cookbook과 달리 책 전체를 관통하는 MAPPER라는 개념을 도입해, 프로그램과 실세계를 수학의 전단사 개념을 통해, 개발자가 추상적으로 생각하며 빠져들 수 있는 함정과 이를 실세계에 반영했을 때 어떻게 문제가 될 수 있는지도 함께 설명을 한다. 처음에는 코드에 무슨 전단사? 라고 생각할 수 있지만, 책을 읽어나가다보면, 이렇게 생각하는 훈련을 해 보는게 도움이 된다는 것을 느낄 수 있게 된다.
이 책은 개발자가 겪게 되는 여러 문제들을 문제-해결-설명의 구조로, 어떤 경우에 어떻게 해결책을 생각해 볼 수 있는지 설명을 해 나가는데, 이런 구조는 생각보다 효율적이라 생각된다. 막상 클린 코드, TDD, 리팩터링 등의 책을 읽어보면, 읽을 때 아 그렇지… 하고 해당 부분에 대해서 공감하고 지나가지만, 그 외에 경우에 이것이 맞는 것인가? 라고 헷갈리거나 적용을 주저하게 되는 경우들이 많다. 이런 경우에 책에서 해당 부분을 찾아 보면, 쉽게 해당 부분이 눈에 들어오는 것은 물론 다양한 책에서 설명하는 이론들 중 어떤 부분이 이 내용과 연결되는 지도 좀 더 쉽게 이해를 할 수 있게 된다. 다음은 SoC(Separation of Concern)이라는 부분과 연결되는 책의 레시피 중 한 예시이다.
저자는 다양한 언어를 통해 가장 주제를 잘 설명할 수 있는 언어로, 각 주제에 대해 설명을 하고 있는데, 이 부분은 독자에 따라 호불호가 될 수 있을 것으로 보인다. 개발을 수년 이상 해 본 프로그래머는 적어도 하나 이상의 언어를 배워 현상에서 사용하는 경험을 해 보았겠지만, 그렇지 않은 경우라면, 예시가 이해가 되지 않는 경우 매번 어떤 언어인지도 모르는 언어들을 원리도 원리지만 동작이 어떻게 되는지 코드를 확인해보는 것이 책의 흥미를 떨어뜨리는 요소가 될 수 있다. 요즘은 ChatGPT와 같은 AI 툴들이 있어 좀 더 쉽게 예제를 파악할 수 있겠지만, 이 역시 책에 대한 집중을 떨어뜨릴 수 있다.
그럼에도 이 책은 개발자가 고민할만한 많은 경우들을 연관 주제별로 나누어, 클린 코드에 대해 좀 더 잘 이해할 수 있도록 도와준다.
이 많은 레시피를 읽고나면 다 기억을 못할 것 같은데? 라고 생각하시는 분이 있을 수 있다. 맞는 말인데, 그런 점에서 이 책의 베타리더분이 작성한 다음 내용이 공감이 된다.
리뷰를 마치며 든 생각은, 개인마다 호불호가 있겠지만… ebook으로 제공받아 리뷰를 하였는데, 이러한 cookbook 성격의 책은 ebook보다는 offline 책이 더 효율적일 것 같다는 생각이 든다. ebook도 노란색으로 중요한 부분을 하이라이트 해 두고 그 부분을 찾아가며 빠르게 검색할 수 있지만, 아직은 중요한 내용에 형광펜으로 표기하고, 관련된 부분들을 tagging 해 두어 주루룩 넘기면서 빨리 찾아보는 것이 더 좋을 것 같다 ^^.
한빛미디어 < 나는리뷰어다 > 활동을 위해서 책을 제공받아 작성된 서평입니다.