책 소개: 리팩터링 워크북(Refactoring Workbook) Computer Code



누군가 저에게 리팩터링을 공부하려 하는데 책을 추천해달라고 하면 우선 RefactoringRefactoring to Patterns(번역본 제목: 패턴을 활용한 리팩터링)을 추천하겠습니다. 사실 리팩터링을 공부하기 시작하는 사람에게는 Refactoring을 대체할 만한 책이 없고, Refactoring to Patterns 역시 리팩터링을 할 때 디자인 패턴을 어떻게 활용할 수 있는가에 대한 거의 유일한 책입니다. 물론 두 책 모두 그 이름만큼 좋은 내용을 담고 있습니다. (지금 와서는 두 책 모두 카테고리 킬러가 되어 버렸죠.)

그런데 프로그래머들이 현업에서 리팩터링을 할 때 가장 먼저 맞닥뜨리는 문제는 '무엇을 리팩터링 해야 하는가?'입니다. 어떤 과정을 거쳐 어떻게 리팩터링 기법을 적용할 것인가는 그 후의 문제이죠. 즉, 흔히 얘기하는 코드에서 나는 '나쁜 냄새'를 맡을 수가 있어야 나쁜 코드를 '인식'하고 리팩터링을 할 수가 있는 겁니다.

물론 RefactoringRefactoring to Patterns에서도 나쁜 냄새에 대해 약간은 다루고 있지만 본격적은 고민은 부족합니다. 책의 성격상 Refactoring은 리팩터링 기법들에 대한 카탈로그에 가깝고, Refactoring to Patterns 역시 리팩터링 과정에서 디자인 패턴을 적용하는 것을 중점으로 다루고 있죠. 즉, '어떻게'에 대해서는 훌륭히 다루고 있지만 '무엇'에 대해서는 아쉬운 점이 있는 책들입니다.

리팩터링 워크북은 리팩터링 관련 책 중에서 '무엇'에 대해 좀 더 중점을 둔 책입니다. (이른바 '나쁜 냄새'에 좀 더 초점을 둔 책이고, 앞의 두 책과는 성격이 달라서 '어떤 책이 더 낫다.'라는 비교는 무리가 있습니다.)

사실 '나쁜 냄새'라는 건 상황마다 다르고 사람마다 다를 수 있기 때문에 현업에서도 항상 논란이 많은 부분입니다. 책에서는 최대한 일반적인 상황에 맞춰 이야기를 하고 있지만, 그래도 비교적 정답을 설명하는 앞의 두 책에 비교하면 '아, 이렇게 하면 되는구나'라는 시원한 느낌은 부족하죠. ^^

그리고 나쁜 냄새를 판별하는 것도 어느 정도 코딩 경험이 있어야 할 수 있는 것이기에, 상대적으로 경험이 부족한 분들에게는 이 책이 무척 어려울 수 있습니다. 무엇보다 Refactoring에 나오는 여러 리팩토링 기법을 알고 있다고 가정을 하고 있기 때문에, 사실 리팩터링 공부를 시작하려는 사람들에게 추천하고 싶은 책은 아닙니다.

하지만, 어느 정도 코딩/리팩터링에 대한 경험이 있거나, 최고가 아닌 그때그때 가장 적합한 방법을 흔쾌히 받아들일 수 있는 마인드를 가지신 분께는 이 책을 추천합니다. 적은 분량이지만 많은 생각을 해볼 수가 있거든요. 머릿속을 정돈한다는 느낌으로 읽으셔도 좋을 것 같습니다.

그리고 워크북들이 가진 장점이 그렇듯, 이 책 역시 혼자 공부할 때보다 여러 명이 공부할 때 훌륭한 가이드의 역할을 톡톡히 할 수 있다고 봅니다. 책의 설명과 연습문제를 혼자 읽고 이해하는 것보다는 여러 명이 각자 이해한 방식을 서로 공유함으로써 더욱 나은 경험을 할 수 있게 되죠.
사실 다른 형식의 책도 마찬가지이지만, 대게 그룹 스터디를 하다 보면 다른 책들은 책 자체의 내용이 많아서 상대적으로 토의를 할 시간이 부족해집니다. 반면에 이런 워크북들은 책 자체의 내용은 짧아서 그만큼 같은 시간에 토의를 많이 할 수 있죠. ^^

이 책을 읽으시려는 분들은 학교, 회사에서 스터디 모임을 만들고 토의를 하는 식으로 스터디를 진행해보실 것을 권장합니다. 참고로 이 책은 제가 참여하는 스터디 모임인 AnD에서도 현재 스터디를 진행하고 있습니다. ^^

핑백

  • 독자리뷰 | Insight Press 2012-04-05 11:11:23 #

    ... 자회로 DIY 오탈자 신고에 관해서~ 4 5 / insight 독자리뷰 플루 님 – http://flutia.egloos.com/3546146 어느 정도 코딩/리팩터링에 대한 경험이 있거나, 최고가 아닌 그때그때 가장 적합한 방법을 흔쾌히 ... more

덧글

  • epro 2007/06/28 18:49 # 삭제 답글

    AJN에서 다음 스터디로 이 책을 가지고 공부할 예정인데.. 플루님도 이미 스터디하고 계셨군요 ^^
    토의식 스터디로 진행하자고 제의해봐야겠네요.
    글 솜씨가 좋으셔서.. 술술 잘 읽고 갑니다 :)
  • 플루 2007/06/28 22:06 # 답글

    epro // 스터디 하기에 좋은 책이죠. ^^ 글 솜씨는 아직 너무 부족해서 읽으시는데 방해나 안됐으면 다행이라는..^^;;
  • CharSyam 2007/06/29 16:08 # 삭제 답글

    그러나 이 책의 단점, 저자의 말만 무조건 받아들이면 안된다는 것.
    뭐, 다른 책들도 모두 그렇지만 ㅎㅎㅎ
  • 플루 2007/06/29 16:46 # 답글

    CharSyam // 입 프로그래밍 책 내자니깐. ㅋㅋ
  • CharSyam 2007/06/29 23:56 # 삭제 답글

    Refactoring to 입 이런거? ㅋㅋㅋ
  • 플루 2007/06/30 11:13 # 답글

    CharSyam // 이펙티브 입++ 도 내야지. ㅋ
댓글 입력 영역