My Shame
I tweeted this, saying “my shame”.
In the beginning there was format_all_that_data
. It was an internal function that took a big data structure and turned it into HTML.
Using Perl’s CGI.pm
to create the HTML. I knew this was a bad idea a decade before, but it was the lab style, and it took a while before I understood Template Toolkit (and other templating engines) as the way of the future.
I needed to make changes, but I had to work in production (a situation I still have yet to escape) and wanted to keep the old one working, so I called it format_all_that_data_new
, and when it was done, I changed the places I knew used format_all_that_data
to format_all_that_data_new
and made it so that format_all_that_data
returned an empty string. That way, if output was expected but not forthcoming, someone would tell me.
And then I was asked to do a few small changes. One change would be fine; do it, test it, release it, forget it. But there were more changes, which is enough to dive onto templating and fixing a lot of other stuff in that program. And again, I am developing in production, so I create format_all_that_data_tt
, which uses Template Toolkit to do the HTML correctly.
And, once I have it, I want to switch over, but I want to minimize the changes, so I move format_all_that_data_new
to format_all_that_data_old
, so that it and all the knowledge I stuck into it and fear to remove are there but not gone.
So I rewrote format_all_that_data_new
to, in it’s entirety:
sub format_all_that_data_new($data) { format_all_that_data_tt($data) }
I keep dead code because I fear, and add cruft to route around it.
This is my shame.