리팩터링이란 '소프트웨어의 동작은 그대로 유지한 채, 코드를 이해하고 수정하기 쉽도록 하는 행위`이다.
또한, 마틴 파울러의 말에 따르면 리팩터링은 중에 코드의 동작에는 문제가 생기지 않아야 하며 언제든지 멈출 수 있다.
리팩터링(refactoring) 은 소프트웨어 공학에서 '결과의 변경 없이 코드의 구조를 재조정함'을 뜻한다. 주로 가독성을 높이고 유지보수를 편하게 한다. 버그를 없애거나 새로운 기능을 추가하는 행위는 아니다. 사용자가 보는 외부 화면은 그대로 두면서 내부 논리나 구조를 바꾸고 개선하는 유지보수 행위이다.
수많은 다른 소프트웨어 개발 용어와 마찬가지로 리팩터링(Refactoring)도 엔지니어들 사이에서 다소 두리뭉실한 의미로 사용된다. 하지만, 마틴 파울러는 리팩터링의 의미를 더 구체적으로, 다소 엄격하게 정의함으로써 더 유용하게 사용하고자 한다.
리팩터링: [명사] 소프트웨어의 겉보기 동작은 그대로 유지한 채, 코드를 이해하고 수정하기 쉽도록 내부 구조를 변경
함수 추출하기와 조건부 로직을 다형성으로 바꾸기 처럼 이름 붙은 리팩터링 기법들이 위 정의에 해당합니다.
리팩터링(하다): [동사] 소프트웨어의 걷보기 동작은 그대로 유지한 채, 여러가지 리팩터링 기법을 적용해서 소프트웨어를 재구성하다.
코드를 정리하는 작업을 모조리 "리팩터링"이라 하는 것이 아니라, 특정한 방식에 따라 코드를 정리하는 것 만이 리팩터링이다
라고 설명한다.
즉, 이전 챕터에서 했던 것 처럼 리팩터링은 아주 작은 단위로 단계를 나누어 쌓아가는 것임으로 리팩터링하는 동안에는 코드가 항상 정상 작동하기 때문에 전체 작업이 끝나지 않았더라도 언제든 멈출 수 있습니다.
link: External reference