Joe asked many of us to prepare their early practices. He drew a map of them "X causes me to do Y". It was very smart. He took it to XtC where it became name the patterns you use.

Here's my list of stuff i find myself looking for, advocating, doing early on in projects. Sometimes ahead of my co-workers, sometimes not.

Interface/Impl separation

Componentization / Composition.
Declarative needs for impls.
Container centric - even if bespoke.
Inversion of Control / external assembly / type 3.
Abolition of static methods and singletons.
Interface model, rooted in primordial instance.
Reimplementable, Wrappable, Mockable.
Transparency of use.
Interim deliverables of some comps.
Late emergence of entire set.
Visualization helper

Text is King

All under source control
No binary files that undergo revisions under source control.
Includes generation of pictures
Binaries subject to lies (diff issue)
All under one click build.

Strong typing of APIs

Little use of Command pattern unless hidden.

Big Exception hierarchies

Rather than using Exception() or SomeException("variable") directly
Hopefully for business exceptions. Test covering the text is
pointless, therefore leave aesthetic strings for humans, and test
cover the message names.

No Logging

It is pointless - test covering it is pointless,
therefore it is pointless.
Prefer monitoring

Untied configuration

Beany configuration, adaptable to resource bundles or other.

Minimization of XML

Config only hopefully.
XML is not a procedural language or anything other than a means to an end.


August 7th, 2003