For the past 6 months I have been working on a beastly 15,000 line .NET application. Spaghetti code with tons of redundancy (Copy&Paste gone wild). I have cleaned up all the existing code and added over a hundred new pieces of functionality (ranging from the cosmetic to major surgery). During this time I have kept some statistics to do with the size and nature of the application.
Despite the addition of all the new functionality just by removing the redundancy I have reduced the total number of semicolons in the application (my rather daft rule-of-thumb for size of the code) from nearly 15,000 to just a shade over 10,000. That’s despite adding nearly three hundred unit tests, extensive logging and the new functionality.
Graph of Program Statistics Over Time
This graph shows how the various elements I tracked varied in relation to each other. The figures are rated from 0 (lowest for that category) to 1 (highest for that category).
- Newline – the number of newline applications in the program.
- Semicolon – the number of semicolons in the program.
- XXX – the number of items that are known to be bogus but not broken.
- FIXME – the number of items that known to be broken.
- public class – the number of public classes in the program.
- Unit Tests – the number of unit tests (using NUnit) in the program
It is interesting (to me anyway) to note the near-constant decline of semicolons while newlines have risen from a mid-project low to be at their highest at the end.
Start and End Statistics
Item | Start Value (July 2003) | (Near) End Value (February 2004) |
---|---|---|
Newlines | 33,121 | 39,800 |
Semicolons | 14,230 | 10,316 |
XXX | 136 | 542 |
FIXME | 1 | 63 |
public classes | 73 | 180 |
Unit Tests | 0 | 275 |
Succinctness is Power
Is this evidence for Paul Graham’s assertion that Succinctness is Power? I’m not sure I can count my changes as succinctness as they have added quite a lot of newlines and over a hundred new classes.
One Reply to “Anatomy of a Rewrite”