How to Write Unmaintainable Code (1999) (doc.ic.ac.uk)

by downbad_ 17 comments 55 points
Read article View on HN

17 comments

[−] Panzerschrek 42d ago

> Make all of your leaf classes final. After all, you're done with the project - certainly no one else could possibly improve on your work by extending your classes.

It's actually a good advice. A class not designed to be extendable should be marked as final.

[−] cogman10 41d ago
Especially since it takes like 2 seconds to make said classes unfinal and there are no negative consequences of doing this.

But 1999, that was peak "inheritance is how we fix everything" thinking.

About the only reason to not do this is if you are writing a library. Even then, it's better to make extensions available through things like closures (not really available in 1999).

[−] btschaegg 41d ago
In fact, I'd go so far as to say that classes not being final or sealed (C#) by default is another failure to set sensible defaults, akin to "everything is mutable unless explicitly marked const".

Properly designing classes for inheritance takes proactive care and is, in my experience, almost never done unless the author has been forced to by external forces (through APIs or agreements with other developers).

[−] vharuck 42d ago

>4. Use acronyms to keep the code terse. Real men never define acronyms; they understand them genetically.

I'll see this and raise inherited SAS code where data sets in the process were named "AAA", "BBB", and so on. To prevent any kind of naming reason, even chronological, new data sets could adopt others' when the existing data set would no longer show up in the program. Which was so helpful when updates needed the previous data.

[−] TimK65 42d ago
Back in 1997 I was assigned to convert a legacy SAS 5 application to SAS 6.

Let's just say that the original programmer had adopted MANY of the techniques in the linked post. The first thing I did was to go through all the code and convert it to only have one statement per line. eye roll

[−] miqkt 42d ago
Ah, time to copy this into the custom instructions for an LLM to amuse myself with.