Next: Isolate context.
Up: Principles
Previous: Minimize import requirements.
- Design components as though they were products (even though
they are sometimes used only by other components).
- Minimize contextual requirements.
- Make each component communications-closed when possible -- a
black box that does not communicate with anything else.
- Next best is relative closure -- guarantee the scope of
communication (e.g., to other components within a common
namespace.) Use authentication mechanisms and transaction
control if necessary to enforce.
- Minimize preconditions
- Avoid side-effects outside the component.
- Minimize aliasing opportunities (where two references could refer to
same object).
- Include means for a component to be exclusively controlled
by others.
- Minimize commitment to control flow.
- Define services to be purely functional, stateless and
preconditionless when possible.
Doug Lea
Sat Apr 8 09:58:22 EDT 1995