This is a class that tries to do everything

This violates the single responsibility principle. Be suspicious for:

  • Huge classes treating many other classes as data classes
  • Classes with names containing words like “System”, “Subsystem”, “Manager”, “Driver”, “Controller”
  • Classes with unrelated sets of methods working on separate instance variables

Decomposing God Classes

Represent every method as a node in a graph. Two methods are connected with an undirected edge if they access a common instance variable or one method calls another. The edges due to common field accesses have more weight than those due to calls. To decompose a class, find disconnected components in the graph.