====== Constantine's Law ====== ===== Variants and Alternative Names ===== * Low Coupling, High Cohesion ===== Context ===== /* fill in contexts here: */ * [[contexts:Object-Oriented Design]] * [[contexts:API Design]] * [[contexts:Architecture]] ===== Principle Statement ===== > "A structure is stable if cohesion is strong and coupling is low."((Albert Endres and Dieter Rombach: //A Handbook of Software and Systems Engineering//. p. 43)) ===== Description ===== This principle is a combination of the two principles [[principles:Low Coupling]] and [[principles:High Cohesion]]. ===== Rationale ===== ===== Strategies ===== ===== Caveats ===== See section [[#contrary principles]]. ===== Origin ===== ===== Evidence ===== /* Comment out what is not applicable and explain the rest: */ /*[[wiki:Proposed]]*/ * [[wiki:Examined]] * [[wiki:Accepted]] /*[[wiki:Questioned]]*/ ===== Relations to Other Principles ===== ==== Generalizations ==== * [[principles:Low Coupling]] * [[principles:High Cohesion]] ==== Specializations ==== * [[principles:Information Expert]] ==== Contrary Principles ==== * [[principles:Keep It Simple Stupid]]: Following this principle often makes the design more complicated. ==== Complementary Principles ==== * [[principles:Model Principle]] ==== Principle Collections ==== ===== Examples ===== ===== Description Status ===== /* Choose one of the following and comment out the rest: */ [[wiki:Stub]] /*[[wiki:Incomplete]]*/ /*[[wiki:Complete]]*/ ===== Further Reading ===== * Albert Endres and Dieter Rombach: //A Handbook of Software and Systems Engineering//. p. 43pp. * Glenford J. Myers: //Reliable Software through Composite Design// * [[wp>Loose coupling]], [[wp>Coupling (computer programming)]] * [[wp>Cohesion (computer science)]] * [[wiki>CouplingAndCohesion]] ===== Discussion ===== Discuss this wiki article and the principle on the corresponding [[talk:principles:Constantine's Law|talk page]].