I usually just type out the entire name to avoid any confusion and to make the code more readable. So Transaction would become transaction, ObjectId is objectId, etc. I realize that this is subjective though and a lot of people do not like this style. I do use abbreviated aliases to avoid namespace collisions however.
I generally type out the whole name but all my screens are huge so long lines are not a problem, well not the problem that my short memory is.
I prefer to be verbose and
remove as much ambiguity as I can than to outsmart myself with an abbreviation I need to parse or I forget when I, or
someone else, needs to revisit the code in the distant future.
I'm also often excessively verbose with method names, eg.
MakeAbsolutePathFromPossibleRelativePathOrDieTrying(string basePath, string possibleRelativePath). You probably didn't just ask yourself "wtf does that do?".
Can anyone give an example of the `namespace collision' problem and why you would need to use abbreviated aliases?
I concur with the examples already given. I find the aliases the Giles showed are also a handy way to use the same code for different platforms. See
http://www.theswamp.org/index.php?topic=49974.msg551546#msg551546. While not strictly necessary in most cases, I find they give a good anchor for the multiple contexts you will be looking at the code in.