<리팩터링 2판> 감상

Roeniss Moon·2021년 6월 8일
4

독서

목록 보기
2/29

느끼는게 없다면 문제다.

감상

6장부터 12장까지, 66개의 리팩터링 스킬을 소개하는데 그 모습이 경이롭다기 보단 기괴하다고 느껴졌다. 마치 루피가 '고무고무~ 총난타!' 하는 것처럼 '크윽... <긴 함수>인가? 그렇다면ㅡ <함수 추출하기>!!' 라고 해야할 것 같은 느낌. (3장을 읽으면 내가 무슨 말 하는지 정확히 이해할 것이다)

이 책을 읽는 데 가장 방해가 되었던 생각은 '그래서 이걸 어떻게 적용하지?'라는 생각이었다. 읽는다고 내 스킬이 되는 건 아닐 뿐더러, 설령 스킬이 된다 하더라도 적재적소에 그 스킬을 떠올릴 수 있을까? 그런 걱정이 책을 읽는 데 가장 큰 걸림돌이었다고 생각한다. 회사의 모 선배님께서는 '그 책 프로그래머들의 자기계발서 같은거 아니예요? 하하'라고 농담을 하셨는데 완전 농담은 아닌 것이다. 심지어 나는 리팩터링과 매우 유사한 내용을 다루는 <읽기 좋은 코드가 좋은 코드다>를 이미 몇 년 전에 읽고 '와 정말 좋은 내용인데 다시 생각해보니 하나도 기억이 안나네'라고 생각했기 때문에 더욱 그런 걱정이 앞섰다. '도움이 안될 것'이라는 생각.

리팩터링과 다른 거라곤 매우 올드한 삽화가 들어갔다는 점 정도?

또 하나의 문제점은, 위 사진 속 책과도 같은 문제점인데, 많은 부분이 '꽤나 당연하게 보인다'는 점이다. 아니 근데 이건 좀 주관적인 요소려나.

아무튼 그럼에도 불구하고 이 책은 (의외로) 여러 부분에서 도움을 많이 주었다.

  • 알고 있는 것들은 다시 한 번 되짚어보는 계기가 되었음 (굳이 심리학을 들먹이고 싶진 않다만, '후견편파'를 항상 조심해야 된다고 생각한다)
  • 몇몇 요소는 정말로 생각도 못해본 것들이 나왔음
  • 재밌는 단어를 많이 배울 수 있었음. (Referential transparency, CQS 등)
  • 곱씹어 볼만한, 혹은 원칙으로 삼아도 되겠다 싶은 기준을 몇 개 얻을 수 있었음 (기본적으로 caller는 가볍고 callee는 무겁게, 주석은 what이나 how가 아니라 why를, 'Object란 무엇인가'에 대한 (아주 약간) 더 정밀한 개념 등등. 근데 책에 이런게 정확하게 명시되어 있다기 보단 내가 주워들었던 개념들이 책에 간접적으로 언급되면서 더 생각해 보게 된 부분이 많다)

그리고 읽으면서 매우 마음이 심란했던 요소들도 있다.

  • 몇몇 기법 설명 직후에 그 와 정확히 상반되는 기법을 소개한다. (ex. 7.5 클래스 추출하기, 7.6 클래스 인라인하기) 왜 그런 건지는 알겠는데도 보고 있자면 정신이 대략 멍해진다.
  • 코드가 쓸데없이 많다. 1장은 열심히 읽었는데 뒤로 갈수록 그냥 그 개념 자체가 중요한 것 같아서 웬만하면 패스했다.
  • 3장이 정말 마음에 안든다. 아직 설명도 안한 기법들을 나열하면서 이럴 땐 이렇게 저럴 땐 저렇게 하라고 말하면 대체 무슨 반응을 해야하는건지? 3장이 12장 뒤로 가야한다.

마지막으로, 어느 자기개발서나 그렇듯 대학생 때, 주니어 때, 시니어 때, - 언제 읽냐에 따라 다른 느낌으로 다가올 것이 뻔하지만, 꽤 오랫동안 다시 들여다보지는 않을 듯 하다.

가장 중요해 보이는 기법들

주관적으로 몇 개만 꼽아보자면, (그리고 내 나름의 해석을 붙여보자면,)

  • 함수 추출하기 : 구체적인 구현 대신 메서드 이름으로 설명하라.
  • 조건부 로직을 다형성으로 바꾸기 : 분기점에선 서브클래스를 활용하라.
  • 질희 함수와 변경 함수 분리하기 : getter 안에서 set 하지마라.

별로 없다.

권장하는 독서 방식

정독... 이라는 단어를 사람마다 조금씩 다르게 쓰겠지만, 일반적으로 이 책은 별로 '정독'하기에 적절한 책은 아닌 듯 하다. 다음과 같은 방식으로 독서하길 추천한다.

  1. 1,2,4,5장을 읽는다.
  2. 6장부터 12장까지 읽는다. 각 소단원의 제목과 맨 앞에 있는 샘플 코드 (before & after), 그리고 배경 설명까지만 읽는다. 더 호기심이 생길 때만 절차를 읽는다. 예시는 읽고 싶을 때만 읽는다. 다만 예시 중간중간 있는 필자 멘트는 꽤 유익하다고 생각한다.
  3. 3장을 읽으면서 잘 기억나지 않는 부분은 해당 소단원으로 가서 무슨 내용이었는지 보고 온다.
profile
기능이 아니라 버그예요

3개의 댓글

comment-user-thumbnail
2021년 6월 21일

(혹시 읽어보셨다면) GoF 디자인 패턴 후기도 들려주세요

1개의 답글