Bad comments are like bad tests, they're bad. Good comments, like good tests, are a boon for complex software.
By bad tests I mean trivial tests (much like trivial comments that just state the obvious), or ones that work on an assumption that need not be generally true and thus changes of the code that are correct from a logic standpoint might still make them fail.