The code itself should show what is happening, but not necessarily why it is happening.
If my COBOL taught me anything, it is to always use clear, descriptive variable-names and function-names. Yes it takes more time in typing, but that gets made up in spades in understanding. Especially several months down the track when you're maintaining that code.