참고
www.youtube.com/watch?v=vqEg37e4Mkw
리팩토링
Why?
- 추가 기능을 더 쉽고 빠르게 개발하기 위함
- 잘 돌아가는 코드를 수정할 일이 없다면 리팩토링 할 필요 없다. 하지만 대부분은 코드는 계속해서 수정이 필요하고 빠른 시간 내에 코드 개발을 해야 한다.
- 리팩토링을 함으로써 코드를 더 이해하기 쉽게 만들고, 추가 개발을 더 쉽게 만들 수 있다.
TDD와 리팩토리
TDD 리팩토링의 사이클은 아래와 같다.
- 요구 사항에 대한 테스트 코드를 작성한다 → 기능 구현이 되지 않았기에 당연히 실패(RED)한다.
- 테스트 코드 실행을 성공(GRREN) 시키기 위해 기능 구현을 한다 → 정상적으로 구현되었다면 테스트 코드를 성공한다.
- 요구 사항을 작성한 코드를 응집도는 높이고, 결합도는 낮추는 방향으로 리팩토링 한다 → 아마 기존 성공(GRREN)하던 테스트 코드는 실패(RED)할 것이다.
- 테스트 코드가 다시 실패한 원인을 파악하고 리팩토링 과정 중 요구 사항 구현이 깨진 부분을 찾는다 → 해당 부분을 고치면 테스트 코드는 다시 성공(GRREN)한다.
테스트 코드가 존재했을 때 리팩토링을 얼마나 더 안전하게 진행할 수 있는가 이 부분이 포인트이다.
처음 보는 코드를 리팩토링 하라고 한다면 위험 부담 때문에 작업을 수행하기가 쉽지 않다.
그러나 기존 비즈니스 로직이나 각 모듈들에 테스트 코드가 존재했다면 그리고 테스트 코드가 모두 성공(GRREN)하고 있던 상황이라면 작업을 진행하는 것은 그렇게 어렵지 않다.
즉, 리팩토링을 하기 전 테스트 코드 환경을 먼저 갖추는 것이 선행되어야 할 것이다.
'자바 개발자되기' 카테고리의 다른 글
Junit5 - @BeforeEach @BeforeAll (0) | 2020.12.23 |
---|---|
[우아콘2020] - Zero Payload 방식 리뷰 (0) | 2020.12.19 |
Junit 병렬 테스트와 Thread Safe - Junit @Execution (0) | 2020.12.16 |
Spring @Async - 비동기 처리 (0) | 2020.12.06 |
자바 스터디 3주차 : 연산자 (0) | 2020.11.27 |