Today I was reading the latest one of the many excellent blog posts Patrick Smacchia has
put out on the topic of code metrics and caring for your code's quality.
The passion this guy has for that topic is such that he has created the best
tool for analyzing your code. But he doesn't stop there. He wants to
make sure we understand what is going on behind the seemingly magic CQL queries that
ship with NDepend. He wants you to understand your code's DNA; with the added bonus
that you can actually improve that DNA.
That's Science with capital S.
- First you understand the problem that you are trying
to fight (code complexity/unmaintainable software,)
- you research ways to quantify it (the metrics,)
- you create some tool or device to extract that information from your subject,
- you extract the metrics from a familiar subject,
- you apply your knowledge of how #2 relates to #1 and improve the subject under analysis,
- you use the tool to verify the metrics have improved,
- time shows you that the changes you made indeed reduced the problem at #1
I simply hate when someone criticizes Patrick's posts as being just marketing material
for his product. Let me tell you this. If I had that much dedication for software
quality, to the point that I had created a great product to empower everyone,
I'd also be trying to explain the problem to you using the tool I wrote. Heck, I'm
pretty sure if someone else had written NDepend Patrick would still be writing about
these things and using the tool in the process.
I like code metrics and static analysis a lot as well, not nearly as much as Mr Smacchia though.
I'm very excited that very soon I'll get to use it in our code base, in our CI server. I can't
wait to learn more about this science and inflict positive changes in our code. Like
everybody else, we know there's dirt and bad smells in our code and it's just awesome that
there's a tool that can help us clearly identify, mitigate, and track it.
My hope is that I'll be able to come back here and share what I've learned about my
code and how the process we went through to improve it.
06-28-2009 10:15 AM