This is exactly the thing I'm always curious about when I'm about to implement something - I have to dig through the code manually looking for a way to do something, and usually there's more than one way to do something (commonly on the order of at least three or four different approaches), and no indication as to which one is better or easier. The easier/preferred one is also not always the most obvious one to find, sometimes it's highly possible to do something "the hard way" and miss the easy and preferred way out.
When I was about to join the team, I asked around if there was any documentation for the Forge code base, as well as any style guidelines or recommendations, but outside of what was documented on the wiki (and things like these weren't), I was basically told there was no other documentation or recommendations anywhere, so outside of whatever recommendations are given to me here on the boards (and I'm always very grateful for them and I try to make the most out of them), I have to find my own way of implementing some feature or another.
As such, I'm commonly implementing things the way I find them to be implementable. If you know of a more optimal way to implement something, feel free to correct me and notify me of it, I'd be grateful for your assistance, but your bitter irony and sarcastic tone is not exactly warranted if we're talking about nearly 180,000-line code base with virtually zero documentation and you haven't volunteered to help out, document it somewhere publicly for everyone (including potential future members who could join) to see, or at least point in the right direction for wherever it may be already documented (and in this case, it just isn't).
As you probably and hopefully know, I'm always willing to cooperate *and* I'm always looking for the more optimal ways of doing things. Personally, I hate suboptimal code. And even more I hate the fact that I have to resort to suboptimal code every now and then inadvertently, simply because I have no idea whether there's a more optimal of doing it or not and if there is, what it is exactly. I have to learn from my own mistakes, and I make sure that I'm learning as I go along. I also don't have any problem correcting my previous implementations where it's due. The problem is that locating optimal ways among a myriad of classes and a hundred times more methods most of which don't even have (any or at least up to date) javadocs can be a rather big issue.
If you're willing to help, by the way, and if you're afraid of suboptimal code, please take a look at the sideboarding WIP thread before I flood the SVN with more suboptimal things relatively soon, and I can pretty much guarantee that, minus help and recommendations, they will be suboptimal (or, rather, not optimal at all) because, like I honestly said there, I have no idea what the optimal implementation would be and even if the current Forge code base has ways of coming up with one easily.

Also, at least at the moment of this writing, no one has come up with suggestions about coding yet, and if no one does, I'll have to invent my own ways of doing things which are likely to be ridiculous from the point of view of an experienced long-time Forge coder. Long story short, it's a perfect spot to help out before you have to clean up a ton of badly written code after me and spend time posting more ironic remarks.
P.S. Just out of curiosity, I checked out CardRules and indeed found out that I could get a list of sets the card was printed in that way, but that does not answer the question how the random set code from that list can then be assigned to the card without converting it to Card via toForgeCard() anyway because neither CardPrinted nor CardRules has the appropriate mutator like setCurSetCode or anything like that - however, converting to Card is, I believe, something you wanted me to avoid. Please, at least make your explanations complete if you're going at your teammates like that for supposedly bad code *and* actually want them to make it better. I don't mind constructive criticism at all, moreover, I welcome it, but I've never really understood the mere "look at how stupid this is" approach.
P.P.S. Speaking of card classes - at this moment, the exact necessity for and difference between the card classes (there's Card, there's CardPrinted, there's CardRules, but there are also CardCharacteristics and InventoryItem and probably more), as well as interaction between them and the necessity of mutual conversion, as well as the same deal for all the different deck-related classes, are mostly mysteries for me.
- Agetian