안녕하세요, DeepCode 입니다. 이번 글에서는 리팩터링 2판(Martin Fowler)을 정리해보려고 합니다. 평소 작성한 코드를 다시 들여다볼 때마다 느껴지는 막막함을 해결하고 싶어 이 책을 다시 펼치게 되었습니다.
▶ 1. 리팩터링 2판, 어떤 책인가요
이 책은 Martin Fowler가 저술하였으며, 소프트웨어 설계의 질을 높이는 구체적인 방법론을 다룹니다. 코드의 기능은 유지하면서 내부 구조를 개선하는 과정을 체계적인 카탈로그 형식으로 제시합니다. 단순히 이론에 그치지 않고 실제 코드의 변화 과정을 단계별로 보여주는 것이 특징입니다.
▶ 2. 코드 냄새를 제거하여 건강한 구조를 만드는 원칙
리팩터링 2판이 관통하는 핵심은 코드의 가독성을 높이고 유지보수 비용을 낮추는 것입니다. 저자는 코드를 작성하는 것만큼이나, 이미 작성된 코드에서 느껴지는 불쾌한 냄새를 감지하고 이를 작은 단위로 쪼개어 개선하는 습관이 중요하다고 강조합니다. 즉, 한 번에 거대한 구조를 바꾸는 것이 아니라 안전하게 한 걸음씩 나아가는 기술을 배우는 과정입니다.
▶ 3. 인상 깊었던 챕터 3가지
3.1 코드 냄새의 감지와 카탈로그
코드 냄새는 코드가 잘못되었다는 신호가 아니라, 개선이 필요하다는 경고입니다. 저자는 중복 코드, 긴 함수, 거대한 클래스 등 구체적인 사례를 통해 우리가 무엇을 경계해야 하는지 알려줍니다. 제 기준으로 정리하면, 이 섹션은 개발자의 직관을 객관적인 지표로 바꾸어주는 지침서와 같습니다.
"코드 냄새는 코드의 구조가 나빠졌음을 나타내는 신호이다." (p.15)
3.2 테스트 코드와 리팩터링의 공생 관계
리팩터링을 수행할 때 가장 두려운 점은 기존 기능이 망가지는 것입니다. 이 책은 테스트 코드가 뒷받침되지 않은 리팩터링은 매우 위험한 도박이라고 경고합니다. 안전한 리팩터링을 위해서는 반드시 자동화된 테스트 환경이 구축되어 있어야 함을 명확히 합니다.
"테스트가 없다면 리팩터링은 불가능하다." (p.42)
3.3 작은 단계로 나누는 변화의 기술
한꺼번에 많은 것을 바꾸려 하면 오류를 찾기 어렵고 복구도 힘듭니다. 저자는 아주 작은 단위의 변화를 반복하는 방식을 제안합니다. 함수 이름을 바꾸거나, 변수를 추출하는 등의 사소한 동작들을 연속적으로 수행하며 점진적으로 완성도를 높여가는 과정이 매우 인상적이었습니다.
▶ 4. 실무 및 일상에 적용하는 방법
- 매일 코드 리뷰 시 코드 냄새 카탈로그를 기준으로 동료의 코드를 검토합니다.
- 새로운 기능을 추가하기 전에 기존 코드의 구조를 먼저 정돈하는 시간을 가집니다.
- 리팩터링을 시작하기 전 반드시 해당 로직을 검증할 테스트 케이스를 먼저 작성합니다.
- 한 번의 커밋에는 단 하나의 리팩터링 기법만 적용하여 변경 사항을 최소화합니다.
▶ 5. 추천 대상 / 비추천 대상
깨끗한 코드를 작성하고 싶지만 어디서부터 시작해야 할지 모르는 주니어 개발자분들에게는 필독서로 추천할 만합니다. 또한 설계의 원칙을 실제 코드로 구현하는 법을 배우고 싶은 중급 개발자에게도 유익합니다. 반면, 당장 돌아가는 코드만 빠르게 만드는 것이 목표인 분들이나, 코드의 구조적 개선보다는 기능 구현 자체에만 몰두하는 환경에 계신 분들에게는 다소 이론적으로 느껴질 수 있습니다.
▶ 6. 함께 읽으면 좋은 책
클린 코드(Robert C. Martin)와 함께 읽으면 설계의 철학과 실전 기술을 동시에 잡을 수 있습니다. 또한 디자인 패턴 관련 서적을 병행하면 리팩터링의 목적지를 더 명확히 이해할 수 있습니다.
관련 글 추천
Tistory
좀 아는 블로거들의 유용한 이야기
www.tistory.com
정리해보면, 리팩터링 2판은 코드의 문제를 감지하고 안전하게 개선하는 구체적인 로드맵을 제시합니다. 테스트를 기반으로 작은 단계를 밟아가는 것이 핵심입니다. 좋은 코드는 한 번에 만들어지는 것이 아니라 지속적인 개선을 통해 완성된다는 점을 깨닫게 해줍니다. 다음 글에서는 클린 코드의 핵심 원칙들을 정리해 보겠습니다.
'책 서평 > IT 서적' 카테고리의 다른 글
| 코드 컴플리트 2판 (Steve McConnell) 핵심 정리·소프트웨어 공학 가이드 (0) | 2026.04.28 |
|---|---|
| 실용주의 프로그래머 20주년 기념판 (Hunt & Thomas) 핵심 정리·서평 (0) | 2026.04.28 |
| 클린 아키텍처 (Robert C. Martin) 핵심 정리·유지보수 가능한 설계 원칙 (0) | 2026.04.28 |
| Clean Code (Robert C. Martin) 핵심 정리·유지보수 가능한 코드 작성법 (0) | 2026.04.28 |
| 코딩인터뷰 [3] 면접전에 (2) | 2018.05.08 |
