14장. 점진적인 개선

일단 진정하기 바란다. 필자는 위 프로그램을 처음부터 저렇게 구현하지 않았다. 더욱 중요하게는 여러분이 깨끗하고 우아한 프로그램을 한 방에 뚝딱 내놓으리라 기대하지 않는다. 지난 수십 여 년 동안 쌓아온 경험에서 얻은 교훈이라면, 프로그래밍은 과학보다 공예에 가깝다는 사실이다. 클린 코드를 짜려면 먼저 지저분한 코드를 짠 뒤에 정리해야 한다는 의미이다.

처음 듣는 이야기가 아니리라 생각한다. 초등학교 시절 선생님들도 (대개 허사였지만) 작문할 때 초안부터 쓰라고 하셨다. 먼저 1차 초안을 쓰고, 그 초안을 고쳐서 2차 초안을 만들고, 계속 고쳐서 최종안을 만들라고 말씀하셨다. 깔끔한 작품을 내놓으려면 단계적으로 개선해야 한다고 가르치려 애쓰셨다. 대다수 신참 프로그래머는 (대다수 초등학생과 마찬가지로) 이 충고를 충실히 따르지 않는다. 그들은 무조건 돌아가는 프로그램을 목표로 잡는다. 일단 프로그램이 '돌아가면' 다음 업무로 넘어간다. '돌아가는' 프로그램은 그 상태가 어떻든 그대로 버려둔다. 경험이 풍부한 전문 프로그래머라면 이런 행동이 전문가로서 자살 행위라는 사실을 잘 안다.

14.2 Args: 1차 초안

목록 14-8은 필자가 맨 처음 짰던 Args 클래스다. 코드는 '돌아가지만' 엉망이다.

...

이처럼 지저분한 코드를 보고서 처음 든 생각이 "저자가 그냥 버려두지 않아서 진짜 다행이야!"이길 바란다. 만약 그렇다면 자신이 대충 짜서 남겨둔 코드를 남들이 어떻게 느낄지 생각하기 바란다.