Avoid god classes
From CSSEMediaWiki
(Difference between revisions)
m (adding the fact that it is an antipattern) |
m (Reverted edits by Ebybymic (Talk); changed back to last version by Stephen Fitchett) |
||
(4 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
− | A god class is a class that either | + | :''Do not create god classes/objects in your system. Be very suspicious of an abstraction whose name contains Driver, Manager, System, or Subsystem.'' --Riel's Heuristic 3.2, [[Arthur Riel 1996]] |
+ | |||
+ | A god class is a class that either knows too much or does too much; a class that has to deal with too many responsibilities. The instantiated object of a god class is called a god object. | ||
Instead of having objects collaborate and distribute data among themselves, they rely to the god object as a "centralised data center". As a consequence of this, maintenance can become difficult. The god class usually has too many number of irrelevant functions or too many global variables. | Instead of having objects collaborate and distribute data among themselves, they rely to the god object as a "centralised data center". As a consequence of this, maintenance can become difficult. The god class usually has too many number of irrelevant functions or too many global variables. | ||
Line 11: | Line 13: | ||
* [[Separation of concerns]] | * [[Separation of concerns]] | ||
* [[Model the real world]] | * [[Model the real world]] | ||
+ | * [[One key abstraction]] | ||
* [[Antipatterns]] | * [[Antipatterns]] | ||
+ | |||
+ | [[Category:Riel's heuristics]] |
Latest revision as of 03:18, 25 November 2010
- Do not create god classes/objects in your system. Be very suspicious of an abstraction whose name contains Driver, Manager, System, or Subsystem. --Riel's Heuristic 3.2, Arthur Riel 1996
A god class is a class that either knows too much or does too much; a class that has to deal with too many responsibilities. The instantiated object of a god class is called a god object.
Instead of having objects collaborate and distribute data among themselves, they rely to the god object as a "centralised data center". As a consequence of this, maintenance can become difficult. The god class usually has too many number of irrelevant functions or too many global variables.
However, there is an instance in which a god class is particularly useful, where performance is needed over maintainability (eg. micro-controllers or hardware programming).
God class/god object is a known software design antipattern.