본문 바로가기

소프트웨어,IT,컴퓨터공학 도서리뷰/해동 지침서(Behavior books): 기술 서적, 조직, 원칙

자바로 배우는 리팩터링 입문 [길벗] [4~5/7] [리팩터링 관련 책] [책 후기]

모델링 프로그래밍 언어 : 자바로 배우는 리팩터링

 

리팩터링을 통해서 건강하게 오래오래 갈 수 있는 코드로 탈바꿈시키자

 

추천도 : 4~5/7

★★★★☆☆☆

읽은 기간 📅 : 예전에 읽다가 다시 읽기 시작해서.. 알 수가 없다.

 

이 책을 추천하는 이들 👨‍👧

  • 리팩터링에서 주요한 리팩터링만 공부해보고 싶은 사람들.
  • 자바 프로그래머

 

난이도 🦈

 

관련된 책들 📚

  1. TDD 관련 책
  2. 디자인 패턴

 

한 줄 평 ✍️

개발자의 훌륭한 습관. 리팩터링 & 테스트


2006년에 일본에서 발간한 책, 2017년에 번역된 책

 

자바8 (2014년) 이전의 책들은 대부분 자바 5가 주요 쟁점이다.

 

고로 이 책의 대부분의 내용은 자바5를 두고 하는 내용들이다.

 

2006년이면 자바의 전성기이던 시절. 이 책은 그 시기에 작성되었다.

 

몇몇 그루(Guru)들이 이 시기에 애자일 문화를 널리 퍼뜨리려고 했으며, 테스트 주도 개발과 리팩터링 & 디자인 패턴이 현업에서 큼지막하게 거론되던 시기이다.

 

내가 속한 연구실의 박사님도 해당 시절에 디자인 패턴을 매주 세미나 했었다고 한다.

 

이 책은 그 시기에 발맞추어 나온 책인 듯하다. 하지만 시간이 흘러 국내에서는 2017년에 번역되어 나왔다.

 

리팩터링와 디자인 패턴은 소개된 이후 시간이 오랫동안 지나도 남아있는 개념(다른 관점으로 보면 기술적이긴 하지만.. 리팩터링 자체에 대해선 나는 철학적인 개념으로 본다)으로 언어를 타지 않는 개념이다.

 

그래서 지금 이 책을 읽는다고 해서 손해 보는 것은 없지만 몇몇 패턴화 된 리팩터링 소재들이 이제는 프로그래밍 라이브러리에서 지원해주고 있다는 것을 생각하면 이 책의 가치가 조금은 바래져 버린다.

 

어서션 도입, 널 객체 도입(자바 8에서 Optional로 대체 가능한..) 등등은 현재 시점에서는 큰 의미가 없을지도 모르는 장이겠다.

 

그 외에는 보편적인 리팩터링이라서 입문에는 좋은 내용이라고 생각되며, 굳이 설명을 듣지 않아도 체화된 사람들이 활용하는 리팩터링이기도 하다.

 

작은 리팩터링부터 클래스의 구조를 변경해보는 리팩터링까지 저자의 세심한 단계별 가르침이 담겨있다.

 

이 책의 장점

 

이 책의 장점은 몇몇 리팩터링과 자주 사용하는 디자인 패턴을 매끄럽게 연결하여 설명하는 부분들이라고 생각한다.

 

리팩터링과 디자인 패턴을 떼려야 뗄 수 없는 관계에 있다.

 

리팩터링은 아주 조밀한 구조에서의 개선이라면 디자인 패턴은 중간 규모의 구조를 개선하는 일이다.

 

그러다 보니 리팩터링을 하다 보면 어느새 디자인 패턴을 적용해야 한다는 시기가 다가오게 된다.

 

이 상황에서는 안전한 테스트 코드를 짜고, 큼지막하게 구조를 개선해서 코드를 말끔하게 생성한다.

 

이 책의 몇몇 부분에서 리팩터링을 끝마친 뒤 사실은 "디자인 패턴"을 적용한 것이다! 라면서

 

추가적으로 디자인 패턴을 소개해준다. 그런 접근이 정말 좋았다.

 

둘을 연결하여 설명하는 책이 많기는 하지만 이 책처럼 리팩터링에 집중하다가 보니 사실 이건 디자인 패턴으로 소개될 만큼 패턴화 된 케이스야!라고 소개해주면 나름의 잔상이 남기 때문이다. [ 리팩터링과 디자인 패턴을 연결해서 생각하게 만들어준다. ]

 

시간이 나면 여유롭게 읽기 좋은 책이라 생각한다.

 

예제도 적합하게 선정했으며 세밀하게 코드의 변화를 보여주고 있기에 큰 어려움이 없을 것이라고 생각한다.

 

다만 너무 오래 지나버린 현재에 와서 읽기에는 시대가 뒤처진 내용들이 남아있어 아쉬움이 남는다.

 

일상에서의 리팩터링. 프로그래머로서의 리팩터링

 

리팩터링에 대한 엉클밥의 메타포가 떠오른다.

 

저녁을 다 먹고 식기를 싱크대에 둔 상황에서 설거지를 미루게 되면 생기는 문제점에 대한 메타포였다.

 

얼룩은 더 강력하게 남게 될 것이고, 시간이 지나 부패된 부분에서는 냄새가 나며, 기름진 부분은 굳어버려서 더 큰 노동으로 설거지에 임하게 될 것이다.

 

그리고 이후에 쌓이게 되는 접시들로 인해서 설거지에 대한 실증이 더 커져 설거지를 더는 하기 싫어지는 마음이 생긴다는 것..

 

코드도 그렇다.

 

재밌게 코딩을 하고 나서 코드의 개선점을 일일이 찾아가며 정리해나가는 것은 쉬운 일이 아니다. 어쩔 때는 이를 위한 테스트 코드와 코드 구조 개선으로 내가 실질적으로 코드를 생산한 시간보다 더 많은 시간을 투자하게 될 수도 있다.

 

그래서 리팩터링은 주기적인 습관이 되어야 한다.

 

밥을 먹고 나서 바로 설거지를 하는 것처럼, 놀고 나서 바로 뒷정리를 하는 것처럼, 잘못된 말을 하거나 행동을 했을 때 빠르게 뉘우치고 감정을 솔직하게 표현하고 반성하는 모습을 보이는 것처럼

 

어떤 이벤트가 발생했다면 그 이벤트가 올바른 상태로 남아있기 위해서는 꾸준히 관심을 가지고 바로 행동에 옮겨보는 노력이 필요하다.

 

코드의 리팩터링을 배웠지만, 인문학적으로 보면 삶에도 적용해볼 만한 철학이라고 생각한다.

[ 특히 결정과 관련된 사안에서 말이다. ]

 

이 책을 마지막으로 기술적인 책은 당분간은 멈출 생각이다.

 

영어 공부, 취업 준비, 석사 졸업 논문 준비( MSA를 특정 도메인에 적용해볼 생각이다.)가 있기 때문이다.

 

나중에 시간이 된다면 고전으로 그 자리를 지키고 있는 켄트 벡의 TDD와 마틴 파울러의 리팩터링을 같이 읽어보고 싶다. [ 3~4개월은 걸리지 않을까 하는... ]

 

이상으로 책 후기를 마쳐본다.

반응형