In order to test my unit in isolation, I write what are called stub
classes to handle external interfaces. Usually these are pretty
simple, but sometimes (particularly with this project), they end up
having to be complex to handle all of the arcane bullshit that was
designed into them.
Well, part of this got into the problem-causing arena today. You see,
there is this external thing called the unit system which is a
particularly arcane bit of filigree. The internal politics have been
driving this piece to be used internally throughout the system for
anything that has a unit of measure that may ever have a conversion to a
different unit (english to metric, or something like feet to inches--
any conversion). It's a huge piece of code. It's also not done. It's
been going through design revisions for over six months.
Now I have proved that we don't need it internally within our team, and
my manager has buy-in on that decision. Unfortunately, that buy-in
doesn't extend to the other modules in the system, so we still have to
do unit system conversions at a couple of points.
Since the unit system isn't done, I had to write a stub.
Well, some of the code in other modules in our group was written with
the non-stub version in mind. And we share some files. So there was a
conflict.
Chasing down the conflict with my manager, we discovered that part of
the whole data transfer system is huge and unnecessarily complex. So
we're ripping it out and redoing it much simpler. And that cascaded into
yet another piece. And right now he's looking to see whether that one
should be ripped out as well.
It had to happen.
Of the modules that will be using this code, one of them has been
through unit test already, and will have to be re-tested. Two are
currently in unit test and one is about to be. And these are major
pieces of code.
And this is the easy part of integration.