본문 바로가기
메모하는 습관

[개발 용어] 리팩터링 정의와 방법

by Love of fate 2023. 10. 12.
728x90
반응형

리팩터링은 외부로 드러나는 동작이나 기능을 변경하지 않고 내부 구조를 변경해서 재구성하는 기법이다.
리팩터링은 새로운 기능을 추가하거나 기능을 개선하지 않는다. 그래서 겉으로 드러나는 이점이 없다.
하지만 리팩터링을 하고 나면 장기적 관점에서 이점이 생긴다.

코드 가독성이 높아지고 리팩터링 이전보다 구현 변경과 확장이 용이해진다. 이러한 변화는 단기적으로는 수정 비용을 낮춰주고 장기적으로는 개발 비용을 줄여준다.

내부 구현을 변경했는데 다르게 동작한다면 안 되기 때문에 리패터링을 하고 나면 기존과 동일하게 동작하는지 확인해야 한다. 코드를 수정할 때마다 수동으로 확인하다 보면 시간이 오래 걸리고 특정 조건에서의 검증으로 놓치기 쉽다. 따라서 테스트 코드를 사용해서 검증하는 게 좋다.

레거시 코드에 대한 테스트 코드를 만드는 게 쉽지는 않다.
그래도 테스트 코드를 만들기 위해 노력해야 한다. 일단 테스트 코드를 만들고 나면 리팩터링을 더욱 안전하게 진행할 수 있다.
경우에 따라 코드를 수정하지 않고서는 테스트 코드를 만들 수 없을 때도 있다. 테스트 코드 없이 리팩토링을 하면 부담될 것이다. 하지만 리팩터링을 하지 않는 것보다 하는 게 낫다.
테스트 코드를 만들지 못해도 리팩터링을 시도해야 한다. 현재의 위험을 회피하다 보면 미래에 더 큰 위험으로 다가오기 때문이다.

[리팩토링 기본 기법]
미사용 코드 삭제
- 가장 쉽지만 가장 부담되는 리팩터링이 코드 삭제다.

매직 넘버

이름 변경

메서드 추출

클래스 추출

파라미터 값 정리

For에서 하는 2가지 일 분리

728x90
반응형