6장 - 모두를 위한 평등 6장에서는 Dollar와 Franc 공통 부분을 찾아 상위 클래스인 Money로 옮긴다. 그 과정에서 이미 공통된 부분인 amount 인스턴스 변수를 Money로 옮겨 주었다. class Dollar extends Money { // private int amount; // Money로 이동 ... } class Franc extends Money { // private int amount; // Money로 이동 ... } abstract class Money { protected int amount; ... } 이 때, 하위 클래스에서 올라온 amount는 protected로 선언되어, 실질적으로 하위 클래스에서 private을 사용하는 것과 동일하게 만들어주었다. 그리고 ..
TDD
테스트 주도 개발의 목표 테스트 주도 개발(이하 TDD)의 궁극적인 목표는 작동하는 깔끔한 코드(clean code that works) 이다. TDD는 예측 가능한 개발 방법이기 때문에 끊임없이 발생할 버그에 대해 걱정하지 않아도 된다. 나 역시 이 부분이 TDD가 필요한 가장 큰 이유라고 생각한다. TDD 규칙 저자에 따르면 TDD는 다음 두 가지의 단순한 규칙을 따른다고 한다. 오직 자동화된 테스트가 실패할 경우에만 새로운 코드를 작성한다. 중복을 제거한다. 중복을 제거하는 것은 직관적이기 때문에 쉽게 이해가 된다. 오직 자동화된 테스트가 실패할 경우에만 새로운 코드를 작성한다. 라는 문장은 조금 이해하기 어렵다. TDD는 실패하는 테스트 -> 일단 성공 -> 리팩터링 인데, "일단 성공"와 "실패..