Originally posted by Arrogant
Patched code is not "worse code". It usually is "better code". Remember, bugs creep in new, fresh code. If we assume that they recycled Civ2 code to design Civ3, then I am horrified when I think of how buggy Civ4 is going to be if they write it from the scratch. It will certainly have lots of new features and all of them would be un-debugged 
I'd prefer a handful of radically new features, and a lot of gameplay polishing.
Thetyper already responded, but I think I need to add my 2 cents.
As I alluded to in an earlier post, I have been in the software business for over 20 years. In my experience, patched code is
very rarely *better* code. Especially when you are patching patches on patches. THIS is where many of the bugs come in: when the piece you just patched now works they way you want it to, but you neglect to check *every* possible routine that calls your patched function, and one uses your output in a different manner than you intended. This is particularly true when you have many different people working on the code at different times in its life, all with slightly different understandings of how everything works together.
Also, sometimes, the design of the module is flakey. Or the implementation of the design is off. (This especially happens when you have interns doing some of the coding, which is not unusual - and I *KNOW* it happened with Civ3

) Take the limit of 512 cities in the game. Theoretically it is possible for that number to be much higher. But the way some of the functions in the game were implemented, any greater number slows the game to an absolute crawl. The programmers know how to fix this, but it would involve scrapping existing code, and rewriting from scratch. But the budget doesn't allow for this, so we live with this arbitrary limitation until they can sit down and write
fresh code for Civ4.
Generally speaking, when I see a patch, I think, "kludge", because I know the programmers had to *break* some code to do it. Sure, the final output is (hopefully) more correct, but the code gets messier and messier with each patch, to the point where it can be difficult to understand what it is supposed to be doing.