Before rafactoring, clean the code base
- Use Git
- Choose your style guide and use linters
- Create graph and clean dead code
- Determinate code duplication, use patterns
Using git saves time to find a bug, by code author or feature
npx jsinspect --ignore "node_modules|jsx" src > jsinspect.out
NOTE: Has issues with some jsx features: danielstjules/jsinspect#87
- Detect and Refactor JavaScript Copy-Paste Code
- Don't Copy Code. Oh, and Inheritance and Composition are Bad, Too
Categories of code smells
-
bloaters
- long method
- large class
- data clumps
- long param list
- primitive obsession
-
toold abusers
- switch statements
- refused bequest
- alt classes with diff interfaces
- temp field
-
change preventers
- divergent change
- shotgun surgery
- parallel inheritance hierarchies
-
dispensables
- lazy class
- speculative genratlity
- data class
- duplicated code
-
dispensables
- feature envy
- inappropriate intimacy
- message chains - law of demeter violations
- middle man - solely exists to fwd messages to others