-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
TDD의 궁극적인 목표 - 작동하는 깔끔한 코드(clean code that works, Ron Jeffries)
작동하는 깔끔한 코드가 훌륭한 이유는?
- 예측 가능한 개발 방법이다.
끊임없이 발생할 버그에 대해 걱정하지 않고, 일이 언제 마무리 될 지 알 수 있다. - 코드가 가르쳐 주는 모든 교훈을 학습할 기회를 갖게 된다.
처음 생각나는 대로 후딱 완료해 버리면 두 번째 것, 더 나은 것에 대해 생각할 기회를 잃게 된다. - 당신이 만든 소프트웨어는 사용자의 삶을 향상시켜 준다.
- 동료들이 당신을 존경할 수 있게 해주며, 당신 또한 동료들을 존경할 수 있게 해준다.
- 작성하는 동안 기분이 좋다!
TDD에서의 규칙
- 오직 자동화된 테스트가 실패할 경우에만 새로운 코드를 작성한다.
- 중복을 제거한다.
이 규칙이 촉직하는 행동 패턴
- 매 (설계에 대한)결정사항에 대해 피드백을 제공하는 실행 가능한 코드를 기반으로 하는 유기적인 설계를 해야 한다.
- 자동화 된 테스트를 다른 사람이 만들어주길 기다릴 수는 없으므로, 직접 테스트를 작성해야 한다.
- 개발 환경은 작은 변화에도 빠르게 반응할 수 있어야 한다.
- 테스트를 쉽게 만들려면 반드시 응집도는 높고 결합도는 낮은 컴포넌트들로 구성되게끔 설계해야 한다.
이 규칙에 의해 결정되는 프로그래밍 순서
- 실패하는 작은 테스트를 작성한다.
- 처음에는 컴파일조차 되지 않을 수 있다.
- 빨리 테스트가 통과하게끔 만든다.
- 이를 위해 아래의 것들을 해도 좋다.
- 기존 코드 복붙하기
- 테스트만 간신히 통과할 수 있게끔 함수가 무조건 특정 상수를 반환하도록 구현하기
- 이를 위해 아래의 것들을 해도 좋다.
- 일단 테스트를 통과하게만 하는 와중에 생겨난 모든 중복을 제거한다(리팩토링)