/withLegacy

Working Effectively with Legacy Code

들어가기 전에 ....

레거시 코드란

코드는 다양한 방법으로 부패하며,
  * 누가 그 코드를 작성했는가
  * 다른 팀으로부터 가져온 코드인지
여부와는 무관하다.	
  • 테스트 루틴이 없는 코드
    • 여기저기 얽힌 난해한 구조 때문에 제대로 이해하지 못하면서도 수정해야만 하는 코드
    • 겉보기에는 쉬워 보였던 기능을 추가하느라 며칠 밤을 지샌 추억
    • 더 이상 어떻게 할 수 없는 코드에 질려서 무력감에 빠진 모습

테스트 루틴이 없는 코드

  • 깨끗한 코드만으로는 충분하지 않다.

    깔끔한 코드
    깨끗한 코드베이스 적절한 구조화

테스트 루틴 없이 대규모의 수정 작업을 시도하면 커다란 어려움에 직면하게 된다.

현실 세계에 깨끗한 코드로 작업중인 팀이 있다면
그팀은 아웃라이어에 해당한다. 대규모 수정작업을 지원하는 테스트 루틴이 없다면, 아무리 깨끗한 코드라도 작업하는 데 비용이 더 든다는 것이다.

궁극적인 목표

  • 코드를 이해하고
  • 테스트 루틴을 사용하며
  • 리팩토링을 수행하고
  • 기능을 추가하는
    기법들과 그 배경

이 책은

  • 훌륭한 코드에 대한 책이 아니며,
  • 훌륭한 설계를 다루는 책도 아니다.

정말로 필요한 것은 환자를 있는 그대로 보고

환자의 문제를 고쳐서 건강한 상태가 되도록 이끄는 것

환자는 마라톤 선수가 되지 못하겠지만,
마라톤 선수라는 이상을 위해
건강 회복이라는 현실을 희생해서는 안된다.

편안함을 느낄 수 있는 지점까지 일단 도착하려고 노력하는 것이 중요하다.

팀 전체적으로 이러한 노력을 지속함으로써 설계는 개선될 수 있다.