일요일, 3월 14, 2010

[일상다반사] 클린 코드: 애자일 소프트웨어 장인 정신



작업이 거의 1년 정도 지연된 끝에 결국 해님과 함께 번역한 클린 코드 번역서가 출간되었다. 로버트 C. "엉클 밥" 마틴이 쓴 이 책은 자바 프로그래머를 대상으로 코드를 항상 깨끗하게 유지하는 구체적인 방법을 다양한 사례와 (경험으로 정리한) 패턴을 들어 설명한다.



자바 쪽으로 치우쳤고 너무 자의적인 이야기를 늘어놓는다고 싫어하는 분들도 계시겠지만, 그래도 일단 (속는 셈치고) 한번 읽어보면 실제로 프로그램을 작성하고 개선하는 과정에서 많은 도움이 되리라는 생각이다. 이 책에서 다루는 내용은 다음과 같다.




  1. 좋은 코드와 나쁜 코드를 구분하는 방법
  2. 좋은 코드를 작성하는 방법과 나쁜 코드를 좋은 코드로 바꾸는 방법
  3. 좋은 이름, 좋은 함수, 좋은 객체, 좋은 클래스를 작성하는 방법
  4. 가독성이 높아지도록 코드 형식을 맞추는 방법
  5. 코드 논리를 흩뜨리지 않고서 완벽한 오류 처리를 구현하는 방법
  6. 단위 테스트와 테스트 주도 개발을 적용하는 방법


여느 자기 개발서(?)와 유사한 책과는 달리 읽을 순간에만 기분좋게 만드는 이론적인 내용이 많으리라고 생각하면 오산이다. 이 책은 중반 이후부터 실제 코드 예를 분석하는 내용이 대부분이므로 코드 흐름을 잘 쫓아가며 읽어야 한다. 따라서 가벼운 기분으로 출퇴근 시간에 읽기에는 조금 무거운 책이라고 보면 틀림없겠다. 온라인 서점에는 역자 서문이 올라와 있지 않기에 여기에 독후감을 대신해 정리해보았다.




이 책을 읽고 난 다음에 한 동안 프로그램을 짜기가 싫어졌다. 급하다고 허둥지둥 서둘러오면서 온갖 나쁜 코드를 만들어온 스스로가 이유 없이 미워지기도 하고 자신감도 잃어버렸다. 아직까지 완벽하게 회복했다고 말하면 거짓말이리라. 하지만 늦었다고 생각했을 때가 가장 빠를 때라 정신을 차린 다음에 요즘도 계속해서 프로그램을 짜고 있다. 하지만 과거와는 달리 조금 더 나아진 방법으로 코드를 만들기 위해 의식적으로 신경을 쓴다.

이 책은 자바 프로그래밍 언어를 사용해서 프로그램을 작성할 때 자기도 만족스럽고 남도 만족스럽도록 깨끗한 코드를 작성하는 방법을 소개하고 있다. 뭐 여기에 엄청나게 위대한 코드 스타일이나 여태껏 아무도 발견하지 못한 비법이 숨겨져 있다고 생각하면 곤란하겠지만, 평상시에 놓치기 쉽고 실수하기 쉬운 여러 가지 패턴을 실제 예를 들면서 소개하고 있기에 어느 정도 자바 프로그램에 익숙한 사람이 보면 느끼는 바가 많을 것이다.

우리가 프로그램을 짜다 보면 코드를 쓰는 시간보다 (남은 물론이고 자신도 정신이 하나도 없이 어지럽힌) 코드를 읽는 시간이 훨씬 더 많다는 사실을 알고 있다면 이 책에서 제시하는 보이스카웃 규칙을 다를 모든 규칙에 앞서 특히 신경을 써서 봐야 한다. 보이스카웃 단원들에게 야영장에 들어올 때보다 나갈 때 더 깨끗한 상태로 만들 의무가 있다면, 우리 개발자들에게는 체크아웃해서 코드를 꺼낼 때보다 체크인해서 코드를 넣을 때 더 깨끗한 상태로 만들어야 할 의무가 있다. 기능 개선의 낭만적인 표현인 유지보수 작업으로 인해 모두들 신경 쇠약에 걸리고 있는 주변을 보면 이런 규칙의 중요성이 더욱 가슴에 와 닿을 것이다.

이 책 앞 부분에서 몇 가지 패턴과 규칙을 익혔다면 저자 머리 속에서 코드를 정리하는 흐름에 따라 코드를 깔끔하게 정리하는 후반부에 집중하도록 하자. 단편적인 코드 스타일과 코드 기법을 다루는 책은 시중에 제법 나와 있으나 의식의 흐름을 그대로 투영해 완결된 코드를 대상으로 차음부터 끝까지 리펙터링하는 진풍경을 다루는 책은 찾아보기 어렵기 때문에 이 책이 독자 여러분에게 주는 가치는 아주 특별하리라.


이 책이 절대적인 진리를 담고 있다거나 이 책만 읽으면 100% 깨끗한 코드를 작성할 수 있다고 믿으면 곤란하다. 늘 그렇듯 핵심은 '실천'에 있기 때문에 자신만의 길을 찾아 계속해서 갈고 닦고 노력하지 않으면 잠시 기분 좋았다가 일상으로 돌아가자마자 다시 번뇌에 휩싸이는 악순환이 반복될테니까...



EOB

댓글 6개:

  1. 당장 서점으로 달려가겠습니다. 좋은 책 번역 감사합니다.

    답글삭제
  2. 드디어 나왔군요. 계속 기다리고 있었습니다. 언능 살께요.

    답글삭제
  3. 다들 책사러 가신는군요.
    이런 열성적인 독자팬들을 위해서 한번 안쏘시나요? jrouge님. :D

    어여 클릭해서 쓩오게 만들어야 겠네요.

    - klimtever

    답글삭제
  4. 모두 모두 감사합니다.

    제가 요즘 정신이 하나도 없어 이벤트도 기획못하고 죄송합니다. T_T

    조만간 정신 좀 들면 열성 애독자 여러분을 위한 행사 준비하겠습니다. ;)

    박재호 올림

    답글삭제
  5. 좋은 책 잘 읽고 있습니다.

    135쪽 [G35] 참고 문헌이 무엇인지 알 수 있을까요? 원서에도 5장은 참고 문헌 절이 없네요.

    답글삭제
  6. 앗... 17장에 있는 냄새 발견법이었네요. 성급한 질문 죄송합니다.^^

    답글삭제