''"The two most important tools an architect has are the eraser in the drawing room and the sledge hammer on the construction site." - FrankLloydWright'' (http://c2.com/ppr/wiki/WikiPagesAboutRefactoring/html.zip -- fast download of these pages.) '''Definition:''' * ReFactor * RefactoringEqualsReparametrization * CodeNormalization * WhatIsRefactoring '''Catalogs:''' * RefactoringCatalog * BigRefactorings '''Refactoring Patterns:''' * BacktrackIfRefactoringFails * TheFirstRefactoringStep * RefactoringInVerySmallSteps * TestEveryRefactoring * RefactoringInDuets * RefactoringUsingTools * AboutRefactoringPatterns * RefactoringPatterns '''Costs and benefits:''' * GoFasterWithRefactoring * CostOfRefactorCarry * RefactoringAndRewriting * RefactoringFriendly * RefactoringIsntOverhead * RefactoringYtwok * EconomicsOfRefactoring '''Counterbalances less design up front:''' * RefactoringIsaRequirement * OaooBalancesYagni '''Small is good:''' * RefactoringInVerySmallSteps * BiggerRefactoringThoughts * NanoRefactorization * ImagineTheRefactoring '''Continuous is good:''' * ConstantRefactoringIsaGoodThing * RefactorMercilessly * OpportunisticRefactoring '''Although sometimes done in larger chunks:''' * RefactoringIteration * RefactorSlack '''Refactoring and understandability:''' * RefactoringMercilesslyHidesTheForest * WhatItTakesToGrokCode * WellFactoredProgramsCannotBeUnderstoodStatically * StudyTheSourceWithaDebugger * WhenToStopRefactoring '''One thing at a time is good:''' * RefactoringHat * OnlyWearOneOfFourHats '''Continuous testing is good:''' * TestEveryRefactoring '''Refactoring Rules:''' * RefactoringLanguage * WhatIsaFactor '''Goals:''' * Refactoring to be ready for unanticipated change * ExtremeNormalForm - ''Recommended'' * ExtremeNormalFormDefinitions * WhatMakesSoftwareFlexible * MultipleInheritanceIsNotEvil * Refactoring to reduce code smells * CodeSmell''''''s - ''Recommended'' * ListenToTheCode * AskTheCode * Refactoring to reduce redundancy * OnceAndOnlyOnce * AbstractWithOnceAndOnlyOnce * BridgePatternIsJustGoodFactoring * JustGoodFactoring * MetaRefactoring * Refactoring for clarity * ShortMethods * ComposedMethod * ExtractMethod * MethodObject * WellFactoredCode * SimplyUnderstoodCode * SeparateTheWhatFromTheHow * IntentionNotAlgorithm * Refactoring to learn or teach * RefactoringReviews * Refactoring for other reasons * MoveMethod * RefactoringAddingComplexity * ChangeVelocity * ExtractImplementationFromHeader * Conflicting goals * CircularRefactoring * CanOnceAndOnlyOnceLoop * RefactorCollision '''Tools:''' * RefactoryBrowser * RefactoringBrowser * VisualAgeJavaRefactoringBrowser - ''Request for the addition of a RefactoringBrowser in VisualAge'' * http://www.xptools.com/ - RefactoringBrowser for Java * IntellijIdea * EclipseIde *http://www.eclipse.org * C# Refactory *http://www.xtreme-simplicity.net * .NET Refactoring *http://dotnetrefactoring.com * C++ Refactoring *http://www.ideat-solutions.com/refpp *http://www.slickedit.com/products/pr_visual_slickedit.php *http://www.xref-tech.com/xrefactory * Delphi Refactoring with ModelMaker CodeExplorer *http://www.modelmakertools.com '''Books:''' * RefactoringImprovingTheDesignOfExistingCode (RefactoringBook) - by MartinFowler (see RefactoringDotCom ) * RefactoringToPatterns '''Language Specific:''' * RefactoringInVisualBasic * RefactoringInJava * RefactoringWithCeePlusPlus '''Related pages about comments and code clarity:''' * CommentCostsAndBenefits * CommentExample * CommentingChallenge * IdentifiersAreComments * MeaningfulComment * MethodCommenting * ToNeedComments * TreatCommentsWithSuspicion * WellCommentedCode '''Related pages about variables and code clarity:''' * AssignVariablesOnce * LocalVariablesDefinedAndUsedOnOnePage * LocalVariablesReassignedAboveTheirUses * MeaningfulName * RoleSuggestingVariable * BadVariableNames - ''for how '''not''' to do it.'' '''Meta Refactoring''' * AutomatedRefactoring '''Refactoring Noses - Pushing the limits of refactoring discovery''' * RefactoringNose '''Other''' * ReasonsToRefactor * SourcesOfRework * RefactoringLegacyCode * SafelyRefactoringLegacyCode ---- Or try one of the following searches ... : (...wiki?search=xyz searches all titles for a case insensitive match) : (...wiki?fullsearch=xyz searches all titles and page bodies for a case insensitive match) * http://c2.com/cgi/wiki?search=factor * http://c2.com/cgi/wiki?search=OnceAndOnlyOnce * http://c2.com/cgi/wiki?search=Oaoo * http://c2.com/cgi/wiki?search=method * http://c2.com/cgi/wiki?search=comment * http://c2.com/cgi/wiki?search=variable ---- CategoryRefactoring