Maxim Hierarchy

From CSSEMediaWiki
(Difference between revisions)
Jump to: navigation, search
m
Line 26: Line 26:
 
* [[Information hiding]]
 
* [[Information hiding]]
 
* [[Tell, Don't Ask]]
 
* [[Tell, Don't Ask]]
* [[Don't expose mutable attributes]]
 
 
* [[Program to the interface not the implementation]]
 
* [[Program to the interface not the implementation]]
 
==== Inheritance ====
 
==== Inheritance ====
Line 38: Line 37:
 
* [[Stable abstractions principle]]
 
* [[Stable abstractions principle]]
 
* [[Open closed principle]] - ?
 
* [[Open closed principle]] - ?
=== Method Level ===
 
* [[Avoid side effects]]
 
* [[Command query separation]]
 
* [[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...
 +
=== Mutability ===
 +
* [[Don't expose mutable attributes]]
 +
* [[Getters and setters]]
 +
* [[Keep accessors and mutators separate]]
 +
* [[Command query separation]]
 +
* [[Avoid side effects]]
 
== Avoid unnecessary complexity ==
 
== Avoid unnecessary complexity ==
 
=== Reuse ===
 
=== Reuse ===
Line 65: Line 66:
 
* [[Coupling and cohesion]]
 
* [[Coupling and cohesion]]
 
* [[Impedance mismatch]]
 
* [[Impedance mismatch]]
* [[Getters and setters]]
 
 
* [[Law of Demeter]]
 
* [[Law of Demeter]]
  

Revision as of 05:06, 28 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

Mutability

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