> Another angle is to collect a set of mantras, design principles
> if you will, something like:
>
> Avoid copying.
> Avoid premature optimization.
> Be extensible.
> Be orthogonal. Orthogonal be.
> Be portable.
> Be scalable.
Quite right. This is the standard practice of listing your priorities
for code. Here are the things to order, in my order:
Robustness
Portability
Maintainability
Testability
Reusability
Speed
Simplicity
Size
To put them into order, imagine you're a Perl sort comparison routine
comparing two of the items. Ask yourself "would I trade $a to get
$b?" Obviously it sometimes depends, but what would you do most of
the time?
Nat