DEV Community

loading...
Cover image for Code Smell 14 - God Objects

Code Smell 14 - God Objects

Maxi Contieri
Learn something new every day. - I am a senior software engineer working in industry, teaching and writing on software design, SOLID principles, DDD and TDD.
Originally published at maximilianocontieri.com Updated on ・1 min read

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

Discussion (0)