"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:
Catalogs:
Refactoring Patterns:
Costs and benefits:
- GoFasterWithRefactoring
- CostOfRefactorCarry
- RefactoringAndRewriting
- RefactoringFriendly
- RefactoringIsntOverhead
- RefactoringYtwok
- EconomicsOfRefactoring
Counterbalances less design up front:
Small is good:
Continuous is good:
Although sometimes done in larger chunks:
Refactoring and understandability:
- RefactoringMercilesslyHidesTheForest
- WhatItTakesToGrokCode
- WellFactoredProgramsCannotBeUnderstoodStatically
- StudyTheSourceWithaDebugger
- WhenToStopRefactoring
One thing at a time is good:
Continuous testing is good:
Refactoring Rules:
Goals:
-
Refactoring to be ready for unanticipated change
-
Refactoring to reduce code smells
- CodeSmells - Recommended
- ListenToTheCode
- AskTheCode
-
Refactoring to reduce redundancy
-
Refactoring for clarity
-
Refactoring to learn or teach
-
Refactoring for other reasons
-
Conflicting goals
Tools:
- RefactoryBrowser
- RefactoringBrowser
- VisualAgeJavaRefactoringBrowser - Request for the addition of a RefactoringBrowser in VisualAge
- http://www.xptools.com/ - RefactoringBrowser for Java
- IntellijIdea
- EclipseIde
- C# Refactory
- .NET Refactoring
- C++ Refactoring
- Delphi Refactoring with ModelMaker CodeExplorer
Books:
- RefactoringImprovingTheDesignOfExistingCode (RefactoringBook) - by MartinFowler (see RefactoringDotCom )
- RefactoringToPatterns
Language Specific:
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
Refactoring Noses - Pushing the limits of refactoring discovery
Other
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