[sldev] [VIEWER] Dead code removal
Dirk Moerenhout
blakar at gmail.com
Tue Sep 4 06:04:50 PDT 2007
I've been working on particles and have run into quite a lot of dead
code. What are we supposed to do with it?
I consider it dead if:
a) It's a class, method ... that is never referenced (or only
referenced by elements that are in turn dead)
b) A conditional statement that has only one possible result is
keeping the code from being executed
c) The code is executed but the result is unused
d) It's a placeholder returning a default value.
Personally I'd like to remove all of it. More extensive reasoning for each case:
a) The logic in unreferenced code hasn't been tested ever since it
became dead. As such newer changes may have invalidated the code or
may conflict with it. Yet people will feel inclined to bring it back
from the dead or may reference it without knowing it's no longer up to
date.
b) Same as in case a applies and additionally there are other
concerns. The condition will most likely still eat CPU cycles and
you're likely wasting memory on the code and it's data elements as the
compiler can't always see the condition will never be met.
c) This is a tricky one. In come cases there's code that seems just
fine but somewhere else the results are thrown away and replaced. As
such the code results into nothing and there's no knowing whether the
result would have had value. This can also eat a lot of CPU cycles if
the dead part is CPU intensive (there is in fact pointless code in
loops).
d) Several functions just return simple values while they are supposed
to do true calculations. This gives a bit of useless overhead and it
makes the code ugly and hard to understand. While it does point out
sometimes that something is missing it does at the same time hide that
things are missing as not everybody will check whether a method really
returns somethings useful or not.
Is it ok to submit a patch for this? I've split my particles stuff in
pieces and the first part of it now is an extensive dead code removal
patch (only for particle related dead code off course). It helps speed
up code as it removes CPU and memory taxing pieces and it also makes
the code easier to understand and read.
Dirk aka Blakar Ogre
More information about the SLDev
mailing list