A Better Way To Learn Refactoring
@rafael_sperling
@rafael_sperling
● Long Method
● Large Class
● Primitive Obsession
● Long Parameter List
● DataClumps
● Switch Statements
● Temporary Field
● Refused Bequest
● ...
Bad Code Smell Examples
@rafael_sperling
● Single-Line Statements
● Block Statements
● Methods
● Classes
Different Levels of Refactoring
@rafael_sperling
● Extract method for only one responsability
● Eliminate duplication through
decomposition
● Allow for decomposition without
drawbacks of duplication
The Ultimate Goal for Refactoring
@rafael_sperling
● For every number from 0 to 100,
○ If it is divisible by 3, print "Fizz",
○ If it is divisible by 5, print "Buzz",
○ If it is divisible by 3 and 5, print "FizzBuzz"
FizzBuzz & The Art of Refactoring
@rafael_sperling
@rafael_sperling
Eliminate
Duplicate Write
Lines Calls
@rafael_sperling
Eliminate Duplicate Write Lines Calls
@rafael_sperling
Extracted isFuzzi and isBuzzi Variables
@rafael_sperling
Invert IF Statements
@rafael_sperling
Extract Display Actual Number Method
@rafael_sperling
Extracted Run Method
@rafael_sperling
Moved FizzBuzz Region Into Separate Class
Thanks!
rafaelsperling@gmail.com
References
https://vimeo.com/43659053
@rafael_sperling

A better way to learn refactoring