EmperorFool
Deity
I have a soft spot for them in my heart, yes, but they have been ejected from my toolbox except when copying code that I'm going to use in a very small function. One has to look no further than the CAR thread for a recent example of iI and iJ biting a seasoned programmer in the butt.
On that subject, even eBuilding isn't very descriptive. There's nothing worse than needing to add a second building to a function and resorting to eOtherBuilding (which I have done). Better to use a name such as eTargetPlayer to go with ePlayer (or eSourcePlayer if you want to get really descriptive).
This all comes down to using tools to write readable code, including descriptive names (functions and variables), documentation, and short functions that do one thing only. The more you do it up front, the less time you'll spend later fixing bugs and scratching your head trying to figure out what a function is supposed to do.
On that subject, even eBuilding isn't very descriptive. There's nothing worse than needing to add a second building to a function and resorting to eOtherBuilding (which I have done). Better to use a name such as eTargetPlayer to go with ePlayer (or eSourcePlayer if you want to get really descriptive).
This all comes down to using tools to write readable code, including descriptive names (functions and variables), documentation, and short functions that do one thing only. The more you do it up front, the less time you'll spend later fixing bugs and scratching your head trying to figure out what a function is supposed to do.