팀이 따르는 실천법에 따라 리팩토링의 효과가 크게 달라진다.

 

리팩토링이 퍼지기 시작한 것도 익스트림 프로그래밍이 도입됐기 때문이었다. 익스트림 프로그래밍은 지속적 통합, 자가 테스트 코드, 리팩토링 등의 개성이 강하면서 상호 의존하는 기법들을 하나로 묶은 프로세스이다.

 

참고로 자가 테스트 코드와 리팩토링을 묶어서 테스트 주도 개발이라 한다.

 

현재 '애자일'을 내세우는 프로젝트 중에는 이름만 애자일인 경우가 대부분이다. 애자일을 제대로 적용하려면 리팩터링에 대한 팀의 역량과 열정이 뒷받침되어 프로세스 전반에 리팩터링이 자연스럽게 스며들도록 해야한다.

 

리팩토링의 첫 번째 토대는 자가 테스트 코드다.  다시 말해 프로그래밍 도중 발생한 오류를 확실히 걸러내는 테스트를 자동으로 수행할 수 있어야 한다. 테스트는 리팩터링에 굉장히 중요한 토대이다.

 

팀으로 개발하면서 리팩토링을 하라면 다른 팀원의 작업을 방해하지 않으면서 언제든지 리팩터링할 수 있어야 한다. 지속적 통합을 적극 권장하는 이유도 바로 이 때문이다.

 

지속적 통합을 적용하면 팀원 각자가 수행한 리팩터링 결과를 빠르게 동료와 공유할 수 있다. 그래서 조만간 삭제될 인터페이스를 이용하여 새로운 기능을 추가하는 일을 방지할 수 있고, 리팩토링한 결과가 다른 팀원의 작업에 문제를 일으키면 즉시 알아낼 수 있다. 자가 테스트 코드 역시 지속적 통합의 핵심 요소다.

 

자가 테스트 코드, 지속적 통합, 리팩터링이라는 세기법은 서로 강력한 상승효과를 발휘한다.

 

세 실천법을 적용한다면 앞 절에서 설명한 YAGNI 설계 방식으로 개발을 진행할 수 있다.

 

이 핵심 실천법을 갖췄다면 애자일의 다른 요소가 주는 이점까지 취할 수 있는 토대를 마련한 셈이다. 지속적 배포는 소프트웨어를 언제든지 릴리스할 수 있는 상태로 유지해준다.

 

지금까지의 설명이 다소 간단해 보일 수 있지만 실무에 적용하기는 만만치 않다. 어떤 방법으로 하든 소프트웨어 개발은 여러 사람과 기계가 복잡하게 엮여 상호작용하는 까다로운 일이다.

'Level Up > Refactoring' 카테고리의 다른 글

리팩토링 - 유래  (0) 2020.09.04
리팩토링 - 성능  (0) 2020.09.04
리팩토링 - 리팩터링, 아키텍처, 애그니(YAGNI)  (0) 2020.09.04
리팩토링 - 고려할 문제  (0) 2020.09.04
리팩토링 - 원칙과 상황  (0) 2020.09.03
블로그 이미지

_김은찬

두번 다시는 꺾이지 않으리

,