Refactoring en Unit Testing
Geschiedenis Hoe maken we complexe code duidelijker? Hoger abstractieniveau –Assembly –“Hogere” programmeertalen –Object-orientatie Design patterns Refactoring
Wat is Refactoring? “Refactoring: a change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior.”
Voordelen Refactoring verbetert het ontwerp Refactoring maakt software begrijpelijker Refactoring helpt bugs te vinden Refactoring helpt sneller te programmeren
Code Smells Dubbele code Lange blokken Te grote Class Te veel parameters
Code Smells (2) Divergente veranderingen –Eén class die veel veranderd moet worden “Shotgun Surgery” –Eén verandering die veel klasses beinvloedt Feature Envy –Een Class is meer geinteresserd in een andere dan in zichzelf Data clumps
Code Smells (3) “Primitive Obsession” Switch statements Parallel Inheritance Lazy Class Speculative Generality
Meest gebruikte refactorings Extract Method Encapsulate Field Replace Type Code Extract Superclass
Meest gebruikte refactorings MoveMethod/Field Rename Method / Field Self Encapsulate Field Replace Nested Conditional with Guard clauses Replace Magic Number with Symbolic Constant
Voorbeeld Collection TableModel