요구사항이 수시로 변경되고 프로젝트 일정이 눈에 보이기 시작하면 테스트 코드 없이 바로 로직 구현을 하는 경우가 태반이라고 했다.
물론 신속히 개발할 수 있지만, 나중에 유지 보수 때 문제가 발생
한다고 한다.
유지보수라고 하지만 새로운 기능을 요구할 때도 있다. 기존 로직에 영향을 주지 않고 코드를 작성해야 하는데 테스트 코드 없이 구현하다 보면 사이드 이펙트가 여기 저기서 터진다.
결국 유지보수기간에 코드에 대한 테스트 코드를 다시 작성하는 사태..
클린코드가 우선순위에서 밀려나서는 안되는 3가지 이유
- 유지보수하기 좋은 코드
프로그래머 작업 중 가장 많은 시간을 투자하는 일이 유지보수이다. 유지보수하기 좋은 코드를 구현하는 것은 서비스의 성패를 좌우하는 중요한 요소이다. 유지보수하기 좋은 코드를 구현하는 핵심은 클린 코드 구현에 있다.- 변화에 대응하는 핵심 능력
운영 중 필연적으로 발생하기 마련인 기능 추가, 버그 수정, 레거시 코드 리뷰(이전 개발자들의 유산과도 같은 코드) 및 수정 작업과 같은 변화 자체에 확장성있게 대응하려면 클린 코드에 대한 이해와 작성 능력이 필수. 변화를 피할 수 없으면 제대로 대응하자.- 프로젝트 협업 능력 향상
읽기 좋은 클린 코드를 작성함으로서 오는 장점은 개인에게만 있지 않다. 특히 1인 개발이 아닌, 여러 개발자가 함께 참여하는 프로젝트일수록 확장성 있는 코드 작성 능력을 가진 개발자의 기여도는 높을 수 밖에 없다.
https://feel5ny.github.io/2017/12/08/TDD_01/
ex) given-when-then test 구조
@Test
public void given_when_then(){
// given - precondition or setup
// when - action or the behaviour that we are going test
// then - verify the output
}
목적 자체가 다르다!
1) TDD: 개발코드의 완성
2) BDD: 개발 결과의 검증