리팩터링 2판 - 코드 구조를 체계적으로 개선하여 효율적인 리팩터링 구현하기

코드에 대한 고민이 많아진 요즘, 마틴 파울러의 리팩터링(2판이라는데 1판은 아주 예전에 나온듯하다..)을 리뷰하게 되었다.
한마디로 정말 감명깊고 보석같은 책이다.🎁
좀 더 이 책을 일찍 접했더라면 그동안 내가 쌓아온 레거시 코드들을 좀 더 아름답게 만들 수 있었겠지만 이 책을 가장 필요로 하는 적절한 때에 만난 것 같아 매우 기쁘다.

책의 앞 부분에서는 리팩터링해나가는 과정과 원칙 등을 소개하고 6장~12장까지는 기법들을 소개하고 있다.
기법은 어떤 경우에 어떤식으로 사용하면 효과적인지, 그리고 한 번 쭉 봐두면 나중에 코드를 리팩터링하면서 분명 적용가능할때 생각나게 될 것이다.
매우 짜릿한 경험이 될것이다! 🤓

* 01 리팩터링의 첫 단계

처음은 실제 리팩터링으로 시작한다. 가장 효과적으로 리팩터링의 경제적인 효과를 보여준다.
내가 책갈피 해둔 부분은

테스트 코드부터 마련한다.
조금씩 변경하고 매번 테스트한다.

하나의 리팩터링을 문제없이 끝낼때마다 커밋! ⭐️
마지막 상태에서 쉽게 돌아갈수있기때문

거꾸로 코드를 짜고 테스트 코드를 만들었었는데 습관으로 TBD(test-based development)를 들여야겠다!

* 02 리팩터링 원칙

리팩토링과 기능추가에 대해, 리팩토링을 하는 이유 등에 대해

여기도 책갈피 📚🔖

난 뛰어난 프로그래머가 아니에요, 단지 뛰어난 습관을 지닌 괜찮은 프로그래머일 뿐이에요 By kent beck
잘 모듈화된 코드는 전체 코드베이스중 일부만 알아도 된다.

리팩터링에 고려되는 부분

새기능 추가하려고 하는데 속도저하되지 않는가?

리팩토링을 과도하게 하는 경우보다 거의 하지 않는 경우가 훨씬 많다. 다시 말해 대부분은 리팩터링을 더 자주 하도록 노력해야 한다.
건강한 코드의 위력을 충분히 경험해보지 않고서는 코드베이스가 건강할 때와 허약할 때의 생산성 차이를 체감하기 어렵다.
코드베이스가 건강하면 기존 코드를 새로운 방식으로 조합하기 쉬워서 복잡한 새 기능을 더 빨리 추가할 수 있다.

나도 과도한 리팩터링은 지양해야 한다고 생각한 사람 중 하나, 근데 과도하기 보다 거의 하지 않았던 것 같다. ㅠㅠ 자아성찰 타임..

언제나 코드베이스가 더 건강해지는것을 추구!
리팩터링의 본질은 코드베이스를 예쁘게 꾸미는데 있지 않다. 오로지 경제적인 이유로 하는 것이다. (개발기간단축 기능추가시간을 줄이고 버그수정시간을 줄인다)
YAGNI(you arenn’t going to need it)

간결한 설계를 해라(물론 기능추가가 험난할것이 확실하다면 flexible하게 하는게 좋고)
당장보다는 사용해보고 정말로 원하는 바를 알게될때가 많다. 문제를 더 깊이 이해하게 됐을때 처리하는 쪽이 나을수 있다.

성능에 대해

시스템에 대해 잘 알더라도 섣불리 추측하지 말고 성능을 측정해봐야 한다.
단기적으로는 리팩터링으로 성능이 느려질 수도 있다. 하지만 최적화 단계에서 코드를 튜닝하기 훨씬 쉬워진다.

* 03 code smell

안 좋은 점에서 배우는 게 있고(저렇게 하지 말아야지 하는…?) 많은 도움이 되었다.

#

주기적으로 다시 읽을만한, 너무나도 추천하는 책이다.