본문 바로가기

후기/독서

리팩터링 2판 Refactoring

 

 

리팩터링 2판: 코드 구조를 체계적으로 개선하여 효율적인 리팩터링 구현하기
Refactoring: Improving the Design of Existing Code (2nd Edition)
저자 마틴 파울러
출판사 한빛미디어
출판일 2020.04.01
쪽수 550

리팩터링 2판은 자바스크립트 언어로 리팩터링 기법을 소개하고 있는 책이다. 책의 저자인 마틴 파울러는 미국 거주 중인 영국인 개발자로서, 1999년 낸 리팩터링 1판의 저자로 유명하다. 1판은 자바 언어로 예제가 서술되었다.

이 책의 가장 중요한 메시지는 겉보기 동작을 유지하는 것이다.
겉보기 동작이란 리팩터링 하기 전과 후의 코드가 똑같이 동작해야 한다는 것인데,  책에 나와있는 모든 기법들은 겉보기 동작을 유지하기 위해 만들어진 것과 다름 없다. 리팩터링 그거 그냥 이름을 바꾸고 인라인하면 되는 것 아니냐? 했던 생각이 잘못된 것이라는 것을 설명하고 있다. 계획적으로 리팩터링하지 않는다면 금방 오류를 만나게 될 것이다.

새로운 기능을 구축하는 것이야 상관이 없겠지만, 기존 기능을 변경할 때는 하나를 수정하려고 하면 연관된 코드의 양이 어마어마해서 리팩터링을 감당할 수 없을 때가 있다. 그럴때 리팩터링 기법들을 다시 살펴보면 많은 도움이 될 것 같다! 어마어마한 양의 리팩터링 절차들을 보면서 코드 리팩터링 기법들을 순서를 정하고 체계화했다는 것은 대단한 일이라고 느꼈다.

리팩터링 기법에는 공통된 내용들이 있다. 책의 내용을 완전히 기억할 수는 없지만 그래도 책을 읽고나면 어렴풋이 그 반복된 절차가 기억에 남게 된다. 지금 기억에 남은 것은 임시 함수를 만들고 테스트한 다음에 마지막에 인라인하는 것이다.

저자는 겉보기 동작을 유지하는 것 뿐만 아니라 테스트코드 작성의 중요성에 대해서도 이야기하고 있다. 챕터 하나를 할애할 만큼 테스트 코드 작성을 하라고 말한다. 현재 현업에서는 테스트 코드 따로 작성할 시간이 따로 없다. 개인 프로젝트를 할 때 적용해봐야겠다.

사실 책을 읽으면서 모 사이트의 강의도 함께 들었는데, 다른 사람에게 추천하고 싶지는 않다. 강사도 저자의 의도를 이해하지 못하는 부분이 많아서 강의에 대한 신뢰가 떨어졌다. 과제를 하고 가이드받는 구조의 강의였다면 느낀점이 달라졌을지도 모르겠다. 혼자서는 공부가 안된다, 돈을 내고 책을 읽어야겠다 하는 분이 계시다면 강의보단 스터디를 꾸려서 공부하는 것을 추천한다.

두번째 챕터인 <리팩터링 원칙>를 읽을 때 밑줄을 많이 칠 만큼 재밌게 읽었다. 그만큼 공감을 많이 했다. 이 책의 요지가 다 나와있는 챕터라고 생각한다. 

 

좋은 코드를 가늠하는 확실한 방법은 '얼마나 수정하기 쉬운가'이다. p.76

누군가 "리팩터링하다가 코드가 깨져서 며칠이나 고생했다"라고 한다면, 십중팔구 리팩터링한 것이 아니다. p.80

리팩터링을 하는 이유는... 단지 다른 사람을 배려하기 위해서가 아니다. 사실 그 다른 사람이 바로 나 자신일 때가 많다. p.82

사람들 대부분은 많이 물려받을수록 좋아한다. 하지만 프로그래밍할 때는 그렇지 않다. p.98

주석을 남겨야겠다는 생각이 들면, 가장 먼저 주석이 필요 없는 코드로 리팩터링해본다. p.131

 


  • 리팩터링을 할 때 항상 염두해야 할 순서
컴파일-테스트-커밋

 

  • 매개변수 이름 짓기 Tip
enrich 본질은 같고 부가 정보만 덧붙이는 변환 함수
transform 형태를 변환시키는 변환 함수
a/an 매개변수의 역할이 뚜렷하지 않을 때 붙인다

 

+) 다른 사람의 개인적인 요약본인데, 기법들을 간단하게 확인할 수 있다.
https://github.com/ittus/Refactoring-summary-2nd-javascript#10-replace-subclass-with-delegate