OnceAndOnlyOnce 법칙의 코드수정. ExtremeProgramming에서 추구하는 방법의 하나. 혹자는 모든 [[Refactoring]]의 결과가 DesignPatterns로 나타난다고도 이야기했다. 정의 (from RefactoringImprovingTheDesignOfExistingCode) * 명사형 : 소프트웨어를 보다 쉽게 이해할 수 있고, 적은 비용으로 수정할 수 있도록 겉으로 보이는 동작의 변화없이 내부구조를 변경하는것. * 동사형 : 일련의 리팩토링을 적용하여, 겉으로 보이는 동작의 변화없이 소프트웨어의 구조를 바꾼다. 수학에서의 인수분해(Factor)를 생각하면 이해하기 쉽다. {{{#!latex $$ x^{2} + x - 2 = (x+2)(x-1) $$ }}} 나쁜 CodeSmell이 나는 코드는 리팩토링되어야한다. 왜냐, * Duplication : for DontRepeatYourself * Nonorthogonal design : more [[Orthogonality]] * Outdated knowledge : code needs to keep up * Performance : improve performance ---- WikiWiki글쓰기에서의 [[Refactoring]] * RefactoringByDeletion * RefactoringPages ---- SeeAlso HowToStudyForProgrammer, Seminar:ReFactoring