— (명사) 소프트웨어 겉보기 동작은 그대로 유지한 채, 코드를 이해하고 수정하기 쉽도록 내부 구조를 변경하는 기법.
— (동사) 소프트웨어의 겉보기 동작은 유지한 채, 여러가지 리팩터링 기법을 적용해서 소프트웨어를 재구성한다.
저자는 특정한 방식에 따라 코드를 정리하는 것을 리팩토링이라고 칭한다.
⇒ 리팩토링을 하다가 코드가 깨지는 경우는 리팩토링이라고 할 수 없다.
리팩토링 하기 전과 후의 코드는 똑같이 작동해야 한다.
<BUT>
함추 추출하기
를 거치면 Call Stack이 달라져서 성능이 변할 수 있다.함수 선언 바꾸기
, 함수 옮기기
와 같은 리팩토링을 하면 모듈의 인터페이스가 바뀐다.→ 리팩토링 과정에서 발견된 버그는 리팩토링 후에도 남아있어야 한다.
리팩터링은 성능 최적화와 유사하다.
- 코드를 변경하지만 프로그램의 전반적인 기능은 유지한다.
- 리팩토링의 목적은 코드를 이해하고 수정하기 쉽게 만드는 것이다.
- 프로그램 성능은 좋아질 수도 나빠질 수도 있다.
소프트웨어를 개발 할때 '기능 추가' 와 '리팩터링'은 명확히 구분되야 한다.