DEV Community

Cover image for Code Smell 14 - God Objects
Maxi Contieri ⭐⭐⭐
Maxi Contieri ⭐⭐⭐

Posted on • Updated on • Originally published at maximilianocontieri.com

 

Code Smell 14 - God Objects

An object that knows too much or does too much.

TL;DR: Don't take too many responsibilities.

Problems

  • Cohesion

  • Coupling

Solutions

  • Split responsibilities.
  • Follow Single Responsibility Principle.
  • Follow The Boy Scout Rule.

Examples

  • Libraries

Exceptions

Sample Code

Wrong

class Soldier {
   run(){}
   fight(){}
   driveGeneral(){}
   clean() {} 
   fire() {} 
   bePromoted() {}
   serialize() {}
   display() {} 
   persistOnDatabase() {}
   toXML() {}
   jsonDecode(){}

  //...     
  }
Enter fullscreen mode Exit fullscreen mode

Right

class Soldier {
   run() {}
   fight() {}
   clean() {}    
  }

Enter fullscreen mode Exit fullscreen mode

Detection

Linters can count methods and warn against a threshold.

Tags

  • Cohesive

Conclusion

Libraries were fine in the 60. In Object-Oriented Programming, we will distribute responsibilities among many objects.

Also Known as

  • Large Class

Relations

More info

Credits

Photo by Francisco Ghisletti on Unsplash


This article is part of the CodeSmell Series.

Last update: 2021/06/21

Top comments (2)

Collapse
 
pyrsmk profile image
Aurélien Delogu

For those who might pass by, this problem can be solved with the composition pattern.

Collapse
 
mcsee profile image
Maxi Contieri ⭐⭐⭐

indeed. but it might be overdesign sometimes

An Animated Guide to Node.js Event Loop

>> Check out this classic DEV post <<