Maxim Hierarchy

From CSSEMediaWiki
(Difference between revisions)
Jump to: navigation, search
m
m
Line 1: Line 1:
 
This is an attempt to categorise maxims.
 
This is an attempt to categorise maxims.
  
== Design & Implementation ==
+
= Design & Implementation =
 
All those maxims related to the system itself.
 
All those maxims related to the system itself.
=== Separate and group system parts rationally ===
+
== Separate and group system parts rationally ==
==== Class & Package Level ====
+
=== Class & Package Level ===
 
This is a rather large block... are there any overarching rules that can group these components...
 
This is a rather large block... are there any overarching rules that can group these components...
===== Data & Behaviour =====
+
==== Data & Behaviour ====
 
* [[Avoid downcasting]]
 
* [[Avoid downcasting]]
 
* [[Common reuse principle]]
 
* [[Common reuse principle]]
Line 21: Line 21:
 
* [[One responsibility rule]]
 
* [[One responsibility rule]]
 
* [[Stable dependencies principle]] - ?
 
* [[Stable dependencies principle]] - ?
 
+
==== Hide Stuff ====
===== Hide Stuff =====
+
 
* [[Fat interfaces]]
 
* [[Fat interfaces]]
 
* [[Hide your decisions]]
 
* [[Hide your decisions]]
Line 29: Line 28:
 
* [[Don't expose mutable attributes]]
 
* [[Don't expose mutable attributes]]
 
* [[Program to the interface not the implementation]]
 
* [[Program to the interface not the implementation]]
===== Inheritance =====
+
==== Inheritance ====
 
* [[Dependency inversion principle]]
 
* [[Dependency inversion principle]]
 
* [[Favor composition over inheritance]]
 
* [[Favor composition over inheritance]]
Line 39: Line 38:
 
* [[Stable abstractions principle]]
 
* [[Stable abstractions principle]]
 
* [[Open closed principle]] - ?
 
* [[Open closed principle]] - ?
==== Method Level ====
+
=== Method Level ===
 
* [[Avoid side effects]]
 
* [[Avoid side effects]]
 
* [[Command query separation]]
 
* [[Command query separation]]
 
* [[Keep accessors and mutators separate]]
 
* [[Keep accessors and mutators separate]]
 
* [[Design by contract]] - The placement of this maxim is difficult...
 
* [[Design by contract]] - The placement of this maxim is difficult...
=== Avoid unnecessary complexity ===
+
== Avoid unnecessary complexity ==
==== Reuse ====
+
=== Reuse ===
 
* [[Software reuse]]
 
* [[Software reuse]]
 
* [[Once and only once]]
 
* [[Once and only once]]
 
* [[Don't repeat yourself]]
 
* [[Don't repeat yourself]]
 
* [[Reuse release equivalence principle]]
 
* [[Reuse release equivalence principle]]
==== Do only what is necessary ====
+
=== Do only what is necessary ===
 
* [[Do the simplest thing that could possibly work]]
 
* [[Do the simplest thing that could possibly work]]
 
* [[You ain't gonna need it]]
 
* [[You ain't gonna need it]]
Line 56: Line 55:
 
* [[Keep it simple]]
 
* [[Keep it simple]]
 
* [[Establishing priorities]]
 
* [[Establishing priorities]]
==== Readable Code is Good Code ====
+
=== Readable Code is Good Code ===
 
* [[Named constants]]
 
* [[Named constants]]
 
* [[Goto considered harmful]]
 
* [[Goto considered harmful]]
==== Group Stuff To Reduce Complexity ====
+
=== Group Stuff To Reduce Complexity ===
 
* [[Common closure principle]]
 
* [[Common closure principle]]
 
* [[Single choice principle]]
 
* [[Single choice principle]]
=== Minimise connections ===
+
== Minimise connections ==
 
* [[Acyclic dependencies principle]]
 
* [[Acyclic dependencies principle]]
 
* [[Coupling and cohesion]]
 
* [[Coupling and cohesion]]
Line 69: Line 68:
 
* [[Law of Demeter]]
 
* [[Law of Demeter]]
  
== Process & Organisation ==
+
= Process & Organisation =
 
All the maxims related to the development processes and management of the development team.
 
All the maxims related to the development processes and management of the development team.
=== OO Developers are not perfect ===
+
== OO Developers are not perfect ==
 
* [[Big design up front]]
 
* [[Big design up front]]
 
* [[Software crisis]]
 
* [[Software crisis]]
 
* [[No silver bullet]]
 
* [[No silver bullet]]

Revision as of 10:38, 27 September 2009

This is an attempt to categorise maxims.

Contents

Design & Implementation

All those maxims related to the system itself.

Separate and group system parts rationally

Class & Package Level

This is a rather large block... are there any overarching rules that can group these components...

Data & Behaviour

Hide Stuff

Inheritance

Method Level

Avoid unnecessary complexity

Reuse

Do only what is necessary

Readable Code is Good Code

Group Stuff To Reduce Complexity

Minimise connections

Process & Organisation

All the maxims related to the development processes and management of the development team.

OO Developers are not perfect

Personal tools