SPA2010   -   What's a wiki?   -   Recent changes   -   Search:
CodeDebt
Thanks to all (35!) of you who turned up in a small room to participate in this session (http://www.spaconference.org/spa2008/sessions/session165.html)! There are a couple of photos at the end (see more at http://www.flickr.com/groups/spa2008photos/) to remind you that the best parties happen in the smallest kitchens...

Peter & David


What we did

In the course of the session we looked at


Outputs

Problems in systems that aren't simply errors can be put broadly into one of three categories: Correctness (fidelity to requirements, robustness, stability), Efficiency (with respect to time, space, scalability) and Clarity. Although all can carry liabilities, the Code Debt which we'#re particularly concerned with is in this last area - to do with the code communicating to its human readers, subcategorised further

In the course of the session, pairs identified instances of liabilities in each of these areas, then (in larger groups) considered ways of avoiding them. As of this first cut [DH, 23 March 2008] I've edited, reworded and recategorised some of these, bur I'm sure we'll refine these further.

Comprehensibility

Liabilities identified

How to avoid

Simplicity

Liabilities identified

How to avoid

Conceptual integrity

Liabilities identified

How to avoid

Behavioural integrity

Liabilities identified

How to avoid


David's reflections

We all seem to understand comprehensibility and to an extent simplicity, but searching for the core of conceptual and behavioural integrity seems harder. Conceptual is about understanding the syntax and semantics of both the domain and the implementation technology, and marrying these understandings in a way that doesn't distort or obfuscate either. Behavioural integrity seems to be the hardest to grok (though in fairness perhaps there weren't that many good examples of this in the code we reviewed) - but things like forced initialisation protocols, race conditions, and ability to set state (and break encapsulation and invariants) all play a part.



 
SPA2010   -   What's a wiki?   -   Recent changes   -   Search: