Clear names first
Ask "what names are unclear?" Good names remove most of the need for comments -- if the name explains the action, you don't need a sentence under it.
Keep functions small
Ask "can this be split?" Small functions are easy to test, easy to review, and easy to reuse. A function that does one thing is a function that ages well.