If it's ok with you I'll just start spouting some of the stuff I've been taught and I've learn myself. Some of it will be relevant, some of it won't be and this stuff is no particular order.
(I've also re-read your first post and picked on some things.)
SHORT ANSWER: Planning, data structures, algorithms.
Long answer:
Planning and Documentation. It sucks the balls, but it helps. If I was going to do something the size of DF I would sit down before anything else and just plan. Plan around your core requirements as that is were the majority of your design is going to come from. This isn't DF either. Anything getting into anything more than 15 classes or so (maybe even 10) and things are getting to get real confusing real quick. I find Class diagrams are a big help.
As for how classes are organized... Well it very much depends on what you want to do.
Do you treat everything in the game like things in java in that they inherit from one common class e.g java's class
Object. (This sacrifices speed for ease).
Do you use
States to change an objects behavior (an units AI or even to change the menus displayed)?
Do you use things like
factories or
abstract factories to create and destroy objects?
There is no real
right way to organize your classes, just
things you want to avoid doing as not to make your code.
But again this is where the planning come in handy.
Testing. This one sucks the other ball, but again this needs to be done. If you can block test code, use
Assert, then just throw as much malformed and rubbish junk as you can at your code and see if it breaks it. Ok this is harder for games but if you have parts you know what should be coming out when stuff is going in, you can test it.
Also how much do you know about
data structures (
binary trees,
linked list,
hashtables) and algorithms (like
Depth-First search,
Breadth-First search,
A*,
quicksort,
mergesort)? Organizing and finding data is important (depending on what are you doing.)
I don't know if any of this will help you, but these are some of the things which I was taught and learned to be a better programmer.