When do I refactor code? BDD: Bug Driven Development
Nov 142007

At my current client, everyone loves BDD, and everyone starts their tests with the word ’should’, describing the behaviour of the associated class. I’m currently looking at this code:

public class PrimaryMixingIteratorTest extends EasyMockObjectTestBase{
    public void testShouldIterateLikeAFox() throws Exception {
        //...
    }
}
public class SecondaryMixingIteratorTest extends EasyMockObjectTestBase{
    public void testShouldIterateLikeABadger() throws Exception {
        //...
    }
}

Once I’ve remembered how foxes and badgers iterate, this code might make more sense to me. Remind me to run that ‘should is not a silver bullet’ brown bag soon…

Update: If you tied a fox and a badger together and dropped them into the corner of a square pond, they’d make a splash. Imagine that splashes happened in squares instead of circles, and that the quarter of the concentric square formed by the fox and badger started at the top-right then went to the bottom-right then bottom-left. Now imagine that the fox shouts out which row the splash happens in, and the badger shouts out the columns.

It’s a way of combining the values of two infinitely-sized lists for an arbitrary number of combinations, without loading the lists into memory. Makes so much more sense. Hold on, I’m getting a phone call from the RSPCA…

No Responses to “Crazy like a fox.”

  1. anonymous says:

    Much love for the Splash metaphore… just wish that ‘iterate like a badger’ meant something to people other than me! ;)

  2. anonymous says:

    I find it helps if you strongly suggest that test class names begin with the word When.

    public class WhenStackIsEmpty
    {
    public void PopShouldThrowAnException()
    {}
    }

Sorry, the comment form is closed at this time.