<aside>
🧑🚒 중요한 챕터만 요약
</aside>
I. 코드 변경의 메커니즘
Chapter 1. 소프트웨어의 변경
- 기존의 동작을 그대로 유지한다는 것은 단순히 코드를 그대로 두는 것 이상의 의미를 가진다.
- 안전한 변경을 수행하기 위해서는 영향이 미치는 범위를 정확히 이해하는 것이 중요하다.
- 다음 세 가지 질문을 할 수 있는가?
- 어떤 변경을 해야 하는가?
- 변경이 정확하게 이뤄졌는지 어떻게 확인할 수 있는가?
- 무언가를 손상시키지 않았는지 어떻게 확인할 수 있는가?
Chapter 2. 피드백의 활용
- 레거시 코드의 딜레마
- 코드를 변경하려면 테스트 코드를 배치해야 한다.
- 그런데 테스트 코드를 배치하려면 코드 변경이 필요할 때가 많다.
- 의존관계는 개발에서 가장 중요한 문제 중 하나이다.
- 의존 관계를 제거하는 작업 자체가 코드를 변경하기 쉽도록 만드는 작업이다.
- 변경하는 순서
- 변경 지점을 식별한다.
- 테스트 코드 작성할 위치를 찾는다.
- 의존 관계를 제거한다.
- 테스트 코드를 작성한다.
- 리팩토링을 수행한다.
생각 정리
- 대부분의 경우 테스트 코드가 작성되어있지 않은 프로젝트에서 테스트 코드 작성을 시작하기 마련이다.
- 처음 시작하는 프로젝트는 너무나도 행운이다.
- 우선 테스트에 용이한 설계를 확보하고 테스트를 먼저 작성하는 테스트 주도 개발을 하는 것이 중요하다.
Chapter 3. 감지와 분리
- 제거 이유에는 2가지가 있다.
- 감지: 코드 내에서 계산된 값에 접근할 수 없을 때, 이를 감지하기 위해 의존 관계를 제거한다.
- 분리: 코드를 테스트에 넣어서 실행할 수 없을 때, 코드를 분리하기 위해 의존 관계를 제거한다.