- clarity and simplicity are of paramount importance
- the user of a module should never be surprised by its behaviour
- modules should be as small as possible but not smaller
- code should be reused rather than copied
- dependencies between modules should be minimal
- errors should be detected as soon as possible,
ideally at compile time
(Joshua Bloch: Effective Java
http://java.sun.com/docs/books/effective/)
Johannes Waldmann
2014-07-10