The document discusses refactoring code to improve maintainability. It defines refactoring as restructuring existing code without changing external behavior. The key points are:
1) Refactoring helps deal with the natural growth of complexity in software development by improving flexibility. It reduces bugs and time spent fixing bugs.
2) Common code smells that indicate an opportunity for refactoring are duplicated code, magic numbers, feature envy, primitive obsession, and long methods.
3) Practicing refactoring through katas and dojos on production code is recommended to learn essential skills like identifying code smells and applying refactoring techniques while preserving functionality.
4) Following principles like single responsibility and high cohesion
12. EXPERIENCED PROGRAMMERS DO NOT
WRITE INFINITELY COMPLEX CODE;
THEY WRITE CODE THAT’S BLINDINGLY
SIMPLE
99 Bottles of OOP
GROWTH OF A DEVELOPER
13. THE NATURE OF SOFTWARE DEVELOPMENT
LEARNING THIS NATURE
AND DEALING WITH IT
HELPS TO INCREASE
FLEXIBILITY.
AMOUNT OF
BAD CODE
# BUGS
TIME SPENT
ON FIXING
BUGS
PANIC
QUICK HACKS
MOTIVATION OF
DEVELOPERS
REFACTORING
AMOUNT OF
CODE SMELLS
INDICATES
OPPORTUNITY FOR
16. REFACTORING
“…IS A DISCIPLINED TECHNIQUE FOR
RESTRUCTURING AN EXISTING BODY OF
CODE, ALTERING ITS INTERNAL
STRUCTURE WITHOUT CHANGING ITS
EXTERNAL BEHAVIOR.”
MARTIN FOWLER
INTRODUCE
PARAMETER OBJECT
EXTRACT CLASS
INTRODUCE
LOCAL VARIABLE
RENAME
MOVE METHODEXTRACT METHOD
INLINE VARIABLE
18. CODE SMELLS
“A CODE SMELL IS A SURFACE
INDICATION THAT USUALLY
CORRESPONDS TO A DEEPER PROBLEM
IN THE SYSTEM”
MARTIN FOWLER
DUPLICATED CODE
MAGIC NUMBER
FEATURE ENVY
PRIMITIVE OBSESSION
LONG METHOD
COMMENTS
27. HOW TO START
ESSENTIAL SKILLS
▸ Explain the code with design principles
▸ Identify code smells
▸ Refactor either manually or through IDE
▸ Familiar with unit/integration tests
▸ Familiar with functionality behaviour you’re changing
▸ Understand abstractions
28. TRY CODING DOJO SESSIONS
ON PRODUCTION CODE
PICK CODE SMELLS TO REMOVE