TDD와 리팩토링, 인터페이스

김태희·2021년 3월 24일
0
post-thumbnail

처음 기능 구현 시

  1. 프로그래밍 요구사항에 대한 기능 구현 목록을 잘 작성한다.

  2. 기능 구현 목록 = 객체들이 가져야 할 책임들.

  3. 책임을 어울리는 객체들에게 나눠준다.

  4. 책임들에 대한 테스트 코드들을 꼼꼼하게 작성한다.

  5. 테스트들이 모두 통과하도록 프로덕션 코드를 구현한다.

리팩토링 시

  1. 프로그래밍 요구사항 == 기능 구현 목록 == 객체들이 가져야 할 책임들 -> 테스트 코드로 작성되어 있음.

  2. 리팩토링 시, 책임들이 객체간에 이동할 순 있어도, 바뀔 순 없다. 왜냐하면, 책임들은 프로그래밍 요구사항이기 때문이다.

  3. 모든 기능(책임)들을 인터페이스로 구현한다. -> 구현은 신경쓰지 않는다 == 구현 객체 내부의 수정과, 구현 객체 자체의 교체가 용이하도록 한다.

  4. 테스트 코드를 수정할 필요가 없다.


결론 :

모든 기능(책임)(프로그래밍 요구사항)들을 인터페이스로 추상화 한다. 인터페이스들의 모든 함수들을 테스트 코드로 작성한다.

모든 테스트들이 통과하면, 모든 기능(책임)(프로그래밍 요구사항)들을 구현 완료한 것이다.

인터페이스 구현 객체 내부의 수정과, 구현 객체 자체의 교체가 자유롭다.

프로그래밍 요구사항이 변경되지 않는 한, 리팩토링 시 테스트 코드를 수정할 필요가 없다.

profile
Web Back-End (Spring, JPA, AWS)

0개의 댓글