[명사] 소프트웨어의 겉보기 동작은 그대로유지, 코드를 이해하고 수정하기 쉽도록 내부 구조를 변경하는 기법
[동사] 겉보기 동작은 그대로 유지한 채, 여러가지 리팩터링 기법을 적용하여 소프트웨어를 재구성하다.
리팩터링하다가 코드가 깨져서 며칠이나 고생했다 라고 한다면 십중팔구 리팩터링 한 것이 아니다...(뜨끔)
리팩터링하기 전과 후의 코드가 똑같이 동작해야 한다
리팩터링하면 소프트웨어 설계가 좋아진다
리팩터링하면 소프트웨어를 이해하기 쉬워진다.
3의법칙
1. 처음엔 그냥한다
2. 비슷한 일을 두 번째로 하게 되면(중복이 생겼다는 사실에 당황스럽지만), 일단 계속 진행한다.
3. 비슷한 일을 세 번째 하게되면 리팩터링 한다. -> 일명 "삼진아웃 리팩터링"