TY - BOOK AU - Wake,William C. TI - Refactoring workbook SN - 0321109295 (pbk.) : AV - QA76.76.R42 W35 2003 PY - 2004/// CY - Boston, MA PB - Addison-Wesley Professional KW - Software refactoring N1 - Includes bibliographical references and index; Roadmap -- Smells within Classes -- Smells between Classes -- Programs to Refactor -- A Word on the Challenges -- Smells Within Classes -- The Refactoring Cycle -- Smells Are Problems -- The Refactoring Cycle -- When Are We Done? -- Inside a Refactoring -- Challenges -- Measured Smells -- Long Method -- Large Class -- Long Parameter List -- More Challenges -- Smells and Refactorings -- Names -- Type Embedded in Name (Including Hungarian) -- Uncommunicative Name -- Inconsistent Names -- Unnecessary Complexity -- Dead Code -- Speculative Generality -- Inverses -- Duplication -- Magic Number -- Duplicated Code -- Alternative Classes with Different Interfaces -- Challenges -- Conditional Logic -- Null Check -- Complicated Boolean Expression -- Special Case -- Simulated Inheritance (Switch Statement) -- Design Patterns -- Smells Between Classes -- Data -- Smells Covered -- Primitive Obsession -- Data Class -- Data Clump -- Temporary Field -- Inheritance -- Refused Bequest -- Inappropriate Intimacy (Subclass Form) -- Lazy Class -- Responsibility -- Feature Envy -- Inappropriate Intimacy (General Form) -- Message Chains -- Middle Man -- Challenges -- Accommodating Change -- Divergent Change -- Shotgun Surgery -- Parallel Inheritance Hierarchies -- Combinatorial Explosion -- Library Classes -- Incomplete Library Class -- Challenges -- Gen-A-Refactoring -- Programs to Refactor -- A Database Example -- Course.java (Online at www.xp123.com/rwb) -- Offering.java -- Schedule.java -- Report.java -- TestSchedule.java -- TestReport.java -- A Simple Game -- Development Episodes -- Catalog -- Catalog.itemsMatching(query) -- Query.matchesln(catalog) -- Process(catalog.data, query.data) -- Planning Game Simulator -- Original Code -- Code (Online at www.xp123.com/rwb) -- Table.java -- Background.java -- Card.java -- Challenges -- Redistributing Features -- Five Whys -- Removing Duplication, Selection Troubles, and a Few Burrs -- Pushing the Code Further -- Admonitions -- Build Refactoring into Your Practice -- Build Testing into Your Practice -- Get Help from Others -- Exercises to Try -- Smell Scavenger Hunt/Smell of the Week -- Re-Refactor -- Just Refactor -- Inhale/Exhale -- Defactoring/Malfactoring -- Refactoring Kata -- Java Refactoring Tools -- Inverses for Refactorings -- Key Refactorings N2 - As a programmer, you need to be able to recognize and improve problematic code, so the program remains in a working state throughout the software lifecycle. Refactoring -- the art of improving the design of existing code safely -- provides an efficient, reliable system for bringing order to the chaos, and one that keeps the surprises to a minimum! Refactoring can be difficult to learn, but Refactoring Workbook, by consultant William C. Wake, presents the material in an easy-learning format that makes learning enjoyable and effective. For many, the obstacle to learning refactoring is identifying the "smells" -- the potential problem areas -- found in code. Instead of having you read about the smells, Refactoring Workbook makes sure you understand them. You'll solve a carefully assembled series of problems, and you'll find yourself learning at a deeper level and arriving at a few insights of your own. Wake uses the workbook method -- a learning-focused approach that forces you to apply the techniques presented in the book -- to help you learn and apply the most important refactoring techniques to your code and, as a side benefit, helps you to think more about creating great code even when you're not refactoring ER -