티스토리 뷰

 

8장. 특징, 어떻게 추가할까?

8.1. 테스트 주도 개발

테스트 주도 개발은 다음과 같은 순서로 진행한다.

1. 실패 테스트 케이스를 작성한다.
2. 컴파일되게 만든다.
3. 테스트에 통과하도록 만든다.
4. 중복을 제거한다.
5. 반복한다.

TDD와 레거시 코드

한 번에 한 작업만 집중하도록 해주는 것은 TDD의 가장 중요한 역할 중 하나이다. TDD를 적용하면 코드 작성이나 리팩토링 과정에서도 두 작업을 함께 하는 경우는 결코 일어나지 않을 것이다. 레거시 코드에 있어서 분리는 특히 중요하다. 분리를 통해 새로운 코드를 작성할 때 다른 새로운 코드와의 독립성을 유지할 수 있기 때문이다. 새로운 코드를 작성하고 나면 리팩토링해서 새로운 코드와 이전 코드 사이에 있는 중복을 제거할 수 있다.

8.2. 비교를 통한 프로그래밍

리스코프 대체 원칙은 한 클래스의 클라이언트 메서드들이 하위클래스의 객체인지 여부에 제한받지 않고 원하는 객체를 사용할 수 있도록 해야 함을 의미한다. 클래스가 이 원칙을 따르는지는 해당 클래스를 가지는 클라이언트 메서드와 클라이언트 메서드가 무엇을 원하는가에 따라 결정된다. 완벽하게 리스코프 대체 원칙 위반을 피해 가는 기계적인 방법은 없다. 하지만 다음과 같이 도움이 되는 몇 가지 방법을 고려할 수 있다.

1. 가급적이면 구체적인 메서드를 오버라이드하는 것을 피한다.
2. 가능하다면 오버라이딩하는 메서드 안에 있는 현재 오버라이딩하려는 메서드를 호출할 수 있는지 확인한다.

 

- James Song

댓글