while(Coder.LOC < LOC.Max)
"The idea is that it’s not so much a good idea to measure how many lines of code a developer is producing (e.g. 7 per day), but rather how many lines of code they are responsible for. And that there’s an absolute maximum. In other words, once I’ve got 50KLOC, I’m done – all my time is going to be spent in maintenance.
I’m not saying 50K is the number – in fact the number will be different for different developers – but the idea that a single developer has a capacity resonates with me. I know how hard it is to go back to things I haven’t looked at for even a week when I’ve got a lot of stuff going. And forget about supporting code that I wrote two years ago."
[Craig Andera]
An interesting suggestion; however, as the codebase matures, it makes sense that the LOC per dev would grow (it is far easier to maintain 50K than to hand code / test / and debug 50K). If anything, you would need to at least have a shift in the location of your LOC. For instance, you have a method called DoSomethingFairlySimple, which does something that is fairly simple, in fact, simple enough that the 20 lines of code in there can be 99.999% certified bug free. As this is a simple method, the implementation isn't going to change, so should I let it eat into my LOC? Additionally, what happens when my RssZeroDotNineOneParser class matures to a point where it is extremely stable and can parse any feed I throw at it? The RSS 0.91 spec isn't going to change, so can I remove this from my LOC, or do I spend time maintaining a piece of code that doesn't need refactoring / matinence. It is entirely possible to refactor something too much, just as it is entirely possible to overdesign the solution in the first place. As has been pointed out before, the entire point of refactoring is to make upcoming changes to your codebase easier, so if there are not going to be any modifications, why do the extra refactoring in the first place?
But, we must always keep in mind that if our code is self-documenting where things are clean, and manually documented where things are sticky, then we should be able to take just about any member of our dev team, plop them down, and have them add functionality or perform fixes on old code when the need arises--regardless of whether their max LOC is 100 or 100K.