How to Write Unmaintainable Code (1999)

(doc.ic.ac.uk)

55 points | by downbad_ 4 days ago ago

19 comments

  • Panzerschrek 3 days ago 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 3 days ago 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 3 days ago 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 3 days ago 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 3 days ago 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

  • oniony 4 days ago ago
  • miqkt 4 days ago ago

    Ah, time to copy this into the custom instructions for an LLM to amuse myself with.

  • downbad_ 4 days ago ago
  • ray_v 3 days ago ago

    I feel this in my bones. I had to wait for them to invent LLM agents that could reverse engineer an application to a specification before I could stat to unravel code I inherited.

  • livinglist 2 days ago ago

    AKA how to assert dominance and improve your job security

  • none2585 4 days ago ago

    One of my favorites to come back to periodically

  • weiyong1024 3 days ago ago

    [flagged]

  • yubainu 3 days ago ago

    [dead]