Archive of March 2008

March 4

Closures for readability

This is really just common sense and all the cool kids are probably already doing it, but I just had a mini revelation. If your programming language supports closures (or code blocks, whatever) then you can create local closures that implement some kind of test to clean up your logical branching.

I had the situation recently where a particular bit of code was getting hard to follow. The problem was that I had if clauses that were getting unwieldy.

The following (rather contrived) example is written in groovy

if (((thing instanceof List) == false) || thing.size() > 0) {
    // do stuff
}

While that's reasonably easy to understand, it could be better by naming the test ...

def isnt_list_or_has_elements = {
    return ((it instanceof List) == false) || it.size() > 0
}

if (isnt_list_or_has_elements(thing)) {
    // do stuff
}

Probably not a new idea, but a handy one nonetheless.

11:32 AM | 0 Comments