LinkedIn

리팩토링과 TDD

2020. 12. 19. 11:24 | 자바 개발자되기

참고

www.youtube.com/watch?v=vqEg37e4Mkw


리팩토링

Why?

  • 추가 기능을 더 쉽고 빠르게 개발하기 위함
  • 잘 돌아가는 코드를 수정할 일이 없다면 리팩토링 할 필요 없다. 하지만 대부분은 코드는 계속해서 수정이 필요하고 빠른 시간 내에 코드 개발을 해야 한다.
  • 리팩토링을 함으로써 코드를 더 이해하기 쉽게 만들고, 추가 개발을 더 쉽게 만들 수 있다.

TDD와 리팩토리

https://codingjourneyman.com/2015/05/18/extreme-programming-test-driven-development/

TDD 리팩토링의 사이클은 아래와 같다.

  1. 요구 사항에 대한 테스트 코드를 작성한다 → 기능 구현이 되지 않았기에 당연히 실패(RED)한다.
  2. 테스트 코드 실행을 성공(GRREN) 시키기 위해 기능 구현을 한다 → 정상적으로 구현되었다면 테스트 코드를 성공한다.
  3. 요구 사항을 작성한 코드를 응집도는 높이고, 결합도는 낮추는 방향으로 리팩토링 한다 → 아마 기존 성공(GRREN)하던 테스트 코드는 실패(RED)할 것이다.
  4. 테스트 코드가 다시 실패한 원인을 파악하고 리팩토링 과정 중 요구 사항 구현이 깨진 부분을 찾는다 → 해당 부분을 고치면 테스트 코드는 다시 성공(GRREN)한다.

테스트 코드가 존재했을 때 리팩토링을 얼마나 더 안전하게 진행할 수 있는가 이 부분이 포인트이다.

 

처음 보는 코드를 리팩토링 하라고 한다면 위험 부담 때문에 작업을 수행하기가 쉽지 않다.

 

그러나 기존 비즈니스 로직이나 각 모듈들에 테스트 코드가 존재했다면 그리고 테스트 코드가 모두 성공(GRREN)하고 있던 상황이라면 작업을 진행하는 것은 그렇게 어렵지 않다.

 

즉, 리팩토링을 하기 전 테스트 코드 환경을 먼저 갖추는 것이 선행되어야 할 것이다.