점진적인 개선

  • 아침에 엉망으로 만든 코드를 오후에 정리하기는 어렵지 않다.
  • 프로그램을 망치는 가장 좋은 방법 중 하나는 개선이라는 이름 아래 구조를 크게 뒤집는 행위다.
  • 소프트웨어 설계는 분할만 잘해도 품질이 크게 높아진다. … 관심사를 분리하면 코드를 이해하고 보수하기 훨씬 더 쉬워진다.

프로그래밍은 과학이 아니다

  • 프로그래밍은 과학이 아니라 ‘공예’에 가깝다.
  • 깨끗한 코드를 짜려면 먼저 지저분한 코드를 짠 뒤에 정리해야한다.

신참 프로그래머

  • 무조건 돌아가는 프로그램을 목표로 잡음
  • ‘돌아가면’ 다음 업무로 넘어감

1차 초안

  • 망가지는 순서
    1. 처음부터 지저분한 코드를 짜려는 생각은 없었다. 코드를 어느정도 손보려 애썼다.
    2. 어느 순간 프로그램은 내 손을 벗어났다.
    3. 코드는 조금씩 엉망이 되어갔다.
  • 엉망으로 변해갈 씨앗을 찾아야 한다.
  • 멈출 타이밍
    • 계속 밀어붙이면 프로그램은 어떻게든 완성하겠지만 그랬다가는 너무 컨서 손대기 어려운 골칫거리가 생겨날 참이었다. …
      그래서 나는 기능을 더 이상 추가하지 않기로 결정하고 리펠터링을 시작했다.
  • 점진적인 개선
    • TDD 기법을 사용: 변경을 가한 후에도 시스템이 변경 전과 똑같이 돌아가야 함
    • 코드를 넣었다 뺐다 하는 사례가 아주 흔함
    • 단계적으로 조금씩 변경하며 매번 테스트를 돌려야 하므로 코드를 여기저기 옮길 일이 많아짐