My Shame
Dave Jacoby
Posted on July 20, 2019
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.
If you have any questions or comments, I would be glad to hear it. Ask me on Twitter or make an issue on my blog repo.
Posted on July 20, 2019
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.