Well, I've got to make sure that the stuff that's in the code is as understandable as possible. The way I do it is to simply name anything the best I can, and if I can't give it a good name (eg one's that would be annoying to type out), I'll stick a comment above it to explain it. Especially in long winded parts I put a lot of comments in essentially step by step, if it needs it of course.
Visual Studio is pretty good in that it takes two seconds to add the descriptions of methods and things with ///. I know in Java the equivalent is making a JavaDoc and referencing it but that takes time (or at least I haven't used Java enough to really know).
