Last week I was
working on code coverage. One of the
results I saw is that some of the source code we own is not used by any of our
testing - it is 0% covered. Digging into
this, I found out that this code is not used at all by Tableau so I intend to
start removing it from our codebase.
Code that is not
used by the product you are working on is often referred to as "dead code" and there are a few
ways this can happen. One obvious way is
that existing code functionality simply gets provided by something else. Let's say you had a very slow Bubble
Sort routine to sort a list. Once
you learn a faster algorithm to sort, like Quick
Sort, you start using the Quick Sort instead. If you are not diligent when making the code
change to use Quick Sort, the Bubble Sort code can get left behind. It is not used at this point and becomes
"dead code."
Similarly, if you
need to implement sorting, you could try Quick Sort, Insertion Sort and Merge
Sort (for instance). Once you profile
the time spent by each routine and generate the test data, you can make a
decision about which routine to use.
Again, if you don't remove the routines you don't use, they become
"dead code."
After digging into
the code coverage numbers, I found a few instances of the second case. Since this code is not used at all, it
doesn't get compiled so that helps mitigate having it around. But it still results in a good amount of
unneeded code stored on everyone's hard drive, maintained in our repository and
so on. The best practice is to just get
rid of it and that is what I am working on now.
Questions, comments,
concerns and criticisms always welcome,
John