Hello, today we are back with the code smells refactoring series and in this case we are going to talk about code smell called Divergent Change
, this smell can be detected when we observe that at a specific point in our application we perform too many changes, these points can be a certain class, a .js
or .ts
file that exports certain functions, etc
A small tip to be able to detect it easily is usually when conflicts occur repeatedly in a certain file, it is usually very likely that this file is complying with the code smell of Divergent change
, WARNING: Take with caution not always will comply with this rule, you have to review the code before acting
Cause
- The module have many responsibilities
- The context of changes is not clear from day one but new changes are still being implemented in the application
class Hero { stamina: number; health: number; armorHealth: number; armorStatus: number; armorRarity: string; defense(): void { // ... } attack(): void { // ... } }
Solution
Split the class using Extract Class
:
class Hero { stamina: number; health: number; armor: Armor; attack(): void { // ... } defense(): void { // ... } } class Armor { health: number; status: number; rarity: string; getHealth(): number { // ... } }
Benefits
- Maintain adherence to the Single Responsibility Principle
- More reliable and tolerant of changes
- Add semantics to the code
Thanks for reading me 😊
Top comments (0)