Refactoring Improving The Design Of Existing Code (1st Edition) By Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts, Erich Gamma
Chapter 1: Refactoring, a First ExampleThe Starting PointThe First Step in RefactoringDecomposing and Redistributing the Statement MethodReplacing the Conditional Logic on Price Code with PolymorphismFinal ThoughtsChapter 2: Principles in RefactoringDefining RefactoringWhy Should You Refactor?Refactoring Helps You Find BugsWhen Should You Refactor?What Do I Tell My Manager?Problems with RefactoringRefactoring and DesignRefactoring and PerformanceWhere Did Refactoring Come From?Chapter 3: Bad Smells in CodeDuplicated CodeLong MethodLarge ClassLong Parameter ListDivergent ChangeShotgun SurgeryFeature EnvyData ClumpsPrimitive ObsessionSwitch StatementsParallel Inheritance HierarchiesLazy ClassSpeculative GeneralityTemporary FieldMessage ChainsMiddle ManInappropriate IntimacyAlternative Classes with Different InterfacesIncomplete Library ClassData ClassRefused BequestCommentsChapter 4: Building TestsThe Value of Self-testing CodeThe JUnit Testing FrameworkAdding More TestsChapter 5: Toward a Catalog of RefactoringsFormat of the RefactoringsFinding ReferencesHow Mature Are These Refactorings?Chapter 6: Composing MethodsExtract MethodInline MethodInline TempReplace Temp with QueryIntroduce Explaining VariableSplit Temporary VariableRemove Assignments to ParametersReplace Method with Method ObjectSubstitute AlgorithmChapter 7: Moving Features Between ObjectsMove MethodMove FieldExtract ClassInline ClassHide DelegateRemove Middle ManIntroduce Foreign MethodIntroduce Local ExtensionChapter 8: Organizing DataSelf Encapsulate FieldReplace Data Value with ObjectChange Value to ReferenceChange Reference to ValueReplace Array with ObjectDuplicate Observed DataChange Unidirectional Association to BidirectionalChange Bidirectional Association to UnidirectionalReplace Magic Number with Symbolic ConstantEncapsulate FieldEncapsulate CollectionReplace Record with Data ClassReplace Type Code with ClassReplace Type Code with SubclassesReplace Type Code with State/StrategyReplace Subclass with FieldsChapter 9: Simplifying Conditional ExpressionsDecompose ConditionalConsolidate Conditional ExpressionConsolidate Duplicate Conditional FragmentsRemove Control FlagReplace Nested Conditional with Guard ClausesReplace Conditional with PolymorphismIntroduce Null ObjectIntroduce AssertionChapter 10: Making Method Calls SimplerRename MethodAdd ParameterRemove ParameterSeparate Query from ModifierParameterize MethodReplace Parameter with Explicit MethodsPreserve Whole ObjectReplace Parameter with MethodIntroduce Parameter ObjectRemove Setting MethodHide MethodReplace Constructor with Factory MethodEncapsulate DowncastReplace Error Code with ExceptionReplace Exception with TestChapter 11: Dealing with GeneralizationPull Up FieldPull Up MethodPull Up Constructor BodyPush Down MethodPush Down FieldExtract SubclassExtract SuperclassExtract InterfaceCollapse HierarchyForm Template MethodReplace Inheritance with DelegationReplace Delegation with InheritanceChapter 12: Big RefactoringsTease Apart InheritanceConvert Procedural Design to ObjectsSeparate Domain from PresentationExtract HierarchyChapter 13: Refactoring, Reuse, and RealityA Reality CheckWhy Are Developers Reluctant to Refactor Their Programs?A Reality Check (Revisited)Resources and References for RefactoringImplications Regarding Software Reuse and Technology TransferA Final NoteEndnotesChapter 14: Refactoring ToolsRefactoring with a ToolTechnical Criteria for a Refactoring ToolPractical Criteria for a Refactoring ToolWrap UpChapter 15: Putting It All TogetherAbout Book:As the application of object technology--particularly the Java programming language--has become commonplace, a new problem has emerged to confront the software development community. Significant numbers of poorly designed programs have been created by less-experienced developers, resulting in applications that are inefficient and hard to maintain and extend. Increasingly, software system professionals are discovering just how difficult it is to work with these inherited, non-optimal applications. For several years, expert-level object programmers have employed a growing collection of techniques to improve the structural integrity and performance of such existing software programs. Referred to as refactoring, these practices have remained in the domain of experts because no attempt has been made to transcribe the lore into a form that all developers could use. . .until now. In Refactoring: Improving the Design of Existing Software, renowned object technology mentor Martin Fowler breaks new ground, demystifying these master practices and demonstrating how software practitioners can realize the significant benefits of this new process. With proper training a skilled system design.
نسخة ورقية
كتب أخرى
Byte Magazine Volume 07 Number 04 - Human Factors Engineering
A rescan for this item is available here.
Features
p.32 The Generic Word Processor, A Word-Processing System for All Your Needs
[author Philip Schrodt]
You'll be amazed by this product's versatility.
p.40 Use Infrare...
Byte Magazine Volume 05 Number 10 - Software
Foreground
p.62 AN 8088 PROCESSOR FOR THE S-100 BUS, Part 2
[author Thomas Woodward Cantrell] The second part of this article describes techniques for interfacing to the S-100 bus.
p.96 SORTING WITH BINARY TREES
[auth...
Tafsr al-Qur'n al-jall
26
Bart D. Ehrman - Forged: Writing In The Name Of God - Why The Bible's Authors Are Not Who We Think They Are
It is often said, even by critical scholars who should know better, that writing in the name of another was widely accepted in antiquity. But New York Times bestselling author Bart D. Ehrman dares to call it what it w...
A history of advertising
336 pages : 28 cm Divided by into sections by decades, this book explores the legendary campaigns and brands of advertising's modern history, with specific anecdotes and comments on the importance on various campaigns...
How to Draw Manga Furries: The Complete Guide to Anthropomorphic Fantasy Characters
How to Draw Manga Furries