
Refactoring Legacy Code (2014) - akalin
https://tiffnix.com/blog/2014/10/19/refactoring-legacy.html
======
munk-a
I have a lot of sympathy having also cut my teeth trying to improve the
maintainability of a DikuMUD based variant. There were some pretty crazy anti-
patterns in that code base - most of which originated with developer-lites,
people who ran the MUD and just hacked at the code until it did what was
needed.

I'm not certain if it also applies to FotR but the MUD I worked on also had an
incredibly failable persistence strategy involving a lot of flat files that
were written to in sequence - weirdly it also had a rather impressive code
hot-swap system that allowed the binary to be swapped out during execution so
thankfully the system wasn't brought down that often.

------
__initbrian__
interesting read. Here's how I understand the outline

* transition version control to Git

* Removed commented out blocks

* Add clang-format to the codebase

* remove support for old operating systems

* fix clang warnings and memory bugs

* reorganize sections of code changing behavior minimally

* add unit tests

* update compiler to clang++

* refactor and add new functionality

~~~
travis90
I agree

------
marktangotango
Yeah that’s all really bad, but the worst I ever saw was some c with the
comment at the top

/* converted with f2c dec 2001 */

I had to to fix some buffer overflow and int overflow issues flagged by an
automated scanner. 2000 line function with about 50 labels and gotos in there.

Working on it was actually kind of zen, it was just one file though, any more
would’ve been unbearable.

------
patrec
Concerning the latency problem over ssh: switching to mosh would probably help
a lot (and any downside to using mosh goes away when one is using tmux
anyway).

------
buzzert
> I also found a back-door in the MUD that was inserted by a previous
> maintainer.

YIKES. This strikes me as the kind of thing that happens when you don’t use
version control.

