본문 바로가기
리뷰/책

[도서 리뷰] 리팩터링 2판

by Dblog 2022. 4. 6.
728x90

리팩터링 2판

리팩터링 2판

리팩터링의 원칙, 리팩터링이 무엇이며 왜 리팩터링을 해야하는지 이유와 그 방법에 대한 책이다.

마틴파울러가 컨설턴트로 있으면서들었던 리팩터링에 대한 질문과 그에 대한 마틴파울러의 생각, 그리고 켄트백 과 그의 지인들의 리펙터링에 대한 의견을 기술해 놓았다.

책에 대한 총평

프로그래밍 언어, 프레임워크에 대해 어느정도 익숙해진 개발자들이 더욱 좋은 개발자가 되는데 상당한 도움이 될 수 있을 책으로 생각한다.
좋은 코드라는 매우 주관적이고 감성적인 주제를 최대한 객관적인 시각으로 볼 수 있게 도와주는 책이라 생각한다.


책의 앞장부터 리팩터링을 하는방법

  1. 함수 추출하기
  2. 변수명 손보기
  3. 전역변수 빼기

의 내용을 앞장부터 나열하며 바로 본론으로 들어갔고 방법론을 제시하는데 솔직한 마음에는 앞쪽 부분만 읽었을때는 가독성만 조금 좋아질 뿐 코드 효율과 개발효율이 좋아지는 것에는 동의하지 못할 것 같은 예제 코드가 많았다.

 

중간중간 저자인 마틴파울러도 리팩토링을 함으로써 30줄 짜리 코드가 100줄이 되었다. 그리고 성능적으로는 더 떨어질 수도 있다. 라고 기술한 내용이 있을 정도로 납득이 되지않는 예제 코드가 많았다.

하지만 이후에 책을 읽다보면 마틴파울러가 주장했던 그럼에도 불구하고 리팩터링을 해야하는 이유인 코드 가독성, 유지보수성 들이 좋아진다는 이유를 알 수 있다.

 

특히 테스트 코드의 중요성을 얘기하는 부분은 격하게 동의하며 읽었다. 리팩터링을 통해 효율이 좋아졌든 안좋아졌든 일단 이전과 동일한 동작을하는 것을 보장해주어야 하고 이는 테스트 코드가 보장해준다는 내용은 격하게 동의하였다.

그리고 이전코드에서 있던 버그들도 그대로 있어야된다는 내용 또한 리팩토링의 결과가 어떠한 비즈니스 로직이나 프로세스를 변경하는 일은 없어야 한다는 것과 각종 경계 상황 즉 다양한 예외 상황을 고민하며 테스트 코드를 작성하는 것이 중요하다고 기술하고 있다.

실제로 테스트코드를 작성하는 것은 운영 코드를 작성하는 것보다 많은 고민과 시간을 투자해야한다고 생각하며 그래야 더욱 안전한 코드가 나온다고 생각한다.

 

6장부터 본격적인 리팩토링 기법에 대한 설명이 시작된다. 도입부에서는 변수이릅짓기, 함수추출하기 등 간단한 내용을 다루고 있다.

설명하는 대부분의 리팩토링 기술이 분리, 추출 개념이고 쓸데없는 지역 변수를 줄이는 것, 좋은 소프트웨어 설계의 핵심을  얼마나 모듈화가 잘 되어있는가 를 말할 정도로 모듈화를 중요하게 생각하고 있다. 이 내용은 함수 옮기기 변수 옮기기 등 이전 내용에서 설명했던 내용들과 부합한다.

또한, for문 분리하기, 조건문 분해하기등 성능적으로 이슈가 있을 수 있는 부분에 대해서도 최적화와 리팩터링을 정확히 구분하라 말했고 보통의 경우 리펙터링을 잘해놓으면 더 나은 최적화 방식을 적용할 수 있는 부분이 많다는 것으로 보아 for문 분리는 성능상 큰 이슈가 없는것 같다.

그리고 조건문을 분해하는 부분에서는 인라인 함수를 최대한 활용해서 if()안에 내용이 복잡하게 있는것을 피했는데 이 부분은 상당히 공감가는 내용이였으며 이어 계속 등장하는 flag 제거하기 부분또한 상당히 공감가는 내용이였다 플래그는 확실히 매력적인 카드지만 다른 사람이 코드를 이해하기 어렵게 한다. 

 

마지막장은 확실히 최종판이다.

상속개념을 설명하기 때문에 그동안 있었던 메서드 올리기 내리기, 생성자 올리기 필드 올리기 서브 클래스 등등 굉장히 다양한 방법의 리팩토링 방법이 있고 이에 따라 장단점이 확실하기 때문에 집중해서 읽어햐 할 페이지이다.

최종적으로 총 평은 확실히 많은 도움을 주는 책이다. 하지만 이건 책만 읽어서는 안되고 간단한 실제 업무 환경의 코드라도 수정해보면서 겪어봐야 이 모든 경험을 내것으로 만들 수 있을것 같다.

728x90

댓글