This anti-pattern applies to modules/classes which have a large interface with too many exposed functions/methods

Impact

  • As the interface of these modules/classes is large, it violates the interface segregation principle (no client should be forced to depend on methods it does not use).
  • Often these modules/classes have many incoming dependencies with multiple clients using the provided functionality.
  • Any bug in these modules/classes has a wide impact on the system.

Characteristics

  • The modules/classes have too many exposed methods.

Guidelines

  • The module/ class should be considered for segregation by forming logical groups of exposed functions/ methods.
  • If there are any functions/ methods which should not be exposed, they should be made private.