How to read Martin Fowler’s “Refactoring”

Song Yongseok
2 min readMay 16, 2022

Example Code == Problem

마틴 파울러님의 리팩터링 2판을 새로 읽어보는 요즘, 문득 떠오른 팁이 하나 있다. 매 챕터마다 리팩터링 과정을 설명하는 데 활용할, 다소 지저분한 땔감 코드를 뙇 던져두고 시작하는데,

이런 식으로 땔감 코드부터 뙇

독자들은 여기에서 바로 페이지를 넘길 게 아니라 잠깐 멈추고

‘나라면 이 코드를 어떻게 리팩터링할까?’

고민해봐야 한다. 그러니까 이 책은, 무려 마틴 파울러가 손수 출제한 ‘리팩터링’ 과목 초급용 문제집 (including 해설집)인 셈. 그런 책을 고민 없이 문제 보자마자 호다닥 답안까지 같이 읽어버릴 참인가?

That’s cheating

수학 공부할 때도 problem 읽자마자 냅다 페이지 뒤로 넘겨 solution 엿보지 않는 것처럼, 지저분한 코드(as a problem)가 주어졌을 때 바로 마틴 파울러의 생각(as a solution)을 훔쳐보지 말고 그 전에 앞서 스스로 고민해보는 과정이 필요하다. 성장은 단위 기술의 사용법을 익히거나, 단순 지식을 암기하는 데서 이루어지지 않는다. 마틴 파울러의 ‘답안’ 들을 참고하고, ‘공식’들을 암기한다고 성장하진 않는다는 이야기이다. 성장은 주어진 문제에 대한 깊은 고민, 그 성찰의 시간으로부터 이루어진다.

Passive skill

사실 자의이든 타의이든, 코드 리뷰에 익숙해진 사람은 책의 예시 코드 첫머리를 읽기 시작한 그 순간부터 이게 그저 도서의 예시 코드였다는 사실을 망각하고 동료의 PR을 리뷰하듯 자연스레 이곳 저곳 뜯어 보게 된다. 이 태도를 패시브 스킬로 얻을 때까진 의식적으로 ‘타인의 코드를 보면 멈추고 잠시 스스로 고민해보는 장치’를 두도록 하자.

--

--

Song Yongseok

학력(學歷) 말고 학력(學力) | Product Engineer | Family man