This is my favorite/most horrifying part:
The control flow is so labyrinthine that some of the code is actually indented by 23 tabs. Forget the 80-column rule – these lines don’t even start until column 92! Even if we discard the inline data tables, then the longest line in the codebase is still a whopping 387 characters long (you’ll have to scroll to the right to read it)
This bit made me laugh the most:
The
TerrariaClone.init()
method, which is over 1,300 lines long, actually grew so large that it hit the limit hardcoded into the Java compiler for the maximum memory that can be taken up by a single function! The solution? Copy half of theinit()
code into a new method, calledcodeTooLarge()
, and call that frominit()
.Is that really true? I swear I’ve seen java codebases with methods thousands of lines long. What can possibly overflow in such a small amount of code?
The only thing that sounds possible to me is a value stored as a u8 or u16 in the bytecode format, with the assumption that methods are never very big, but that would still be surprising given that it’s a stack based VM.
And of course, let’s not forget this: https://github.com/radian-software/TerrariaClone/issues/2