Refactoring for Software Design Smells: Managing Technical Debt
Awareness of design smells – indicators of common design problems – helps developers or software engineers understand mistakes made while designing, what design principles were overlooked or misapplied, and what principles need to be applied properly to address those smells through refactoring. Developers and software engineers may "know" principles and patterns, but are not aware of the "smells" that exist in their design because of wrong or mis-application of principles or patterns. These smells tend to contribute heavily to technical debt – further time owed to fix projects thought to be complete – and need to be addressed via proper refactoring.
Refactoring for Software Design Smells presents 25 structural design smells, their role in identifying design issues, and potential refactoring solutions. Organized across common areas of software design, each smell is presented with diagrams and examples illustrating the poor design practices and the problems that result, creating a catalog of nuggets of readily usable information that developers or engineers can apply in their projects. The authors distill their research and experience as consultants and trainers, providing insights that have been used to improve refactoring and reduce the time and costs of managing software projects. Along the way they recount anecdotes from actual projects on which the relevant smell helped address a design issue.
Wat mensen zeggen - Een review schrijven
We hebben geen recensies gevonden op de gebruikelijke plaatsen.
Overige edities - Alles weergeven
abstract class Abstraction smell Adapter pattern ALIASES This smell ANECDOTE application behavior Broken Hierarchy CallSite client code code base common complex Consider context create cycle cyclic dependency Cyclic Hierarchy Cyclically-dependent Cyclomatic complexity data members data structures Deep Hierarchy design decisions design principles design quality design smells enabling technique encoding Encryption class explicit type checks Figure functionality Grady Booch Hence Hierarchy smell hub class IMPACTED QUALITY ATTRIBUTES implementation details information hiding inheritance hierarchy instance Insufficient Modularization introduced IS-A relationship Java JavaDoc known in literature large number Modularization smell Multifaceted Abstraction multiple responsibilities object object-oriented POTENTIAL CAUSES PRACTICAL CONSIDERATIONS primitive types public interface Rebellious Hierarchy refactoring for Example refactoring solution refactoring tasks result reusability reuse runtime problems Single Responsibility Principle smell arises smell occurs software design subclasses subtypes Suggested refactoring superclass supertype technical debt tion understand Unfactored Hierarchy variations Wide Hierarchy