Size: 1834
Comment:
|
Size: 2277
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 16: | Line 16: |
처음부터 지저분한 코드를 짜려는 생각은 없었다. 실제로도 코드를 어느 정도 손보려고 애썼다. 함수 이름이나 변수 이름을 선택한 방식, 어설프지만 나름대로 구조가 있다는 사실 등이 필자 노력의 증거다. 하지만 어느 순간 프로그램은 필자의 손을 벗어났다. 코드는 조금씩 엉망이 되어갔다. 첫 버전은 이만큼 엉망이지 않았다. |
14장. 점진적인 개선
일단 진정하기 바란다. 필자는 위 프로그램을 처음부터 저렇게 구현하지 않았다. 더욱 중요하게는 여러분이 깨끗하고 우아한 프로그램을 한 방에 뚝딱 내놓으리라 기대하지 않는다. 지난 수십 여 년 동안 쌓아온 경험에서 얻은 교훈이라면, 프로그래밍은 과학보다 공예에 가깝다는 사실이다. 클린 코드를 짜려면 먼저 지저분한 코드를 짠 뒤에 정리해야 한다는 의미이다.
처음 듣는 이야기가 아니리라 생각한다. 초등학교 시절 선생님들도 (대개 허사였지만) 작문할 때 초안부터 쓰라고 하셨다. 먼저 1차 초안을 쓰고, 그 초안을 고쳐서 2차 초안을 만들고, 계속 고쳐서 최종안을 만들라고 말씀하셨다. 깔끔한 작품을 내놓으려면 단계적으로 개선해야 한다고 가르치려 애쓰셨다. 대다수 신참 프로그래머는 (대다수 초등학생과 마찬가지로) 이 충고를 충실히 따르지 않는다. 그들은 무조건 돌아가는 프로그램을 목표로 잡는다. 일단 프로그램이 '돌아가면' 다음 업무로 넘어간다. '돌아가는' 프로그램은 그 상태가 어떻든 그대로 버려둔다. 경험이 풍부한 전문 프로그래머라면 이런 행동이 전문가로서 자살 행위라는 사실을 잘 안다.
14.2 Args: 1차 초안
목록 14-8은 필자가 맨 처음 짰던 Args 클래스다. 코드는 '돌아가지만' 엉망이다.
...
이처럼 지저분한 코드를 보고서 처음 든 생각이 "저자가 그냥 버려두지 않아서 진짜 다행이야!"이길 바란다. 만약 그렇다면 자신이 대충 짜서 남겨둔 코드를 남들이 어떻게 느낄지 생각하기 바란다.
처음부터 지저분한 코드를 짜려는 생각은 없었다. 실제로도 코드를 어느 정도 손보려고 애썼다. 함수 이름이나 변수 이름을 선택한 방식, 어설프지만 나름대로 구조가 있다는 사실 등이 필자 노력의 증거다. 하지만 어느 순간 프로그램은 필자의 손을 벗어났다.
코드는 조금씩 엉망이 되어갔다. 첫 버전은 이만큼 엉망이지 않았다.