Settings

Theme

My Case Against Code Comments

jakusys.de

22 points by baumgartn3r 15 years ago · 22 comments

Reader

ekidd 15 years ago

I think everybody hates comments like "getFoo: Get the value of Foo", and huge blocks of commented-out code.

However, I _love_ seeing the following types of comments:

1. The high-level overview of how things fit together: This class represents a compiled method at the VM level. It does not contain the actual native code. If native code exists, it is handled using class Blah instead.

2. What should work, but doesn't: You'd think the following two lines of commented-out code would work, but they don't, because libfoo 1.7.1 and earlier has a stupid bug, so we need to do things the hard way.

3. The epic warning: Apple's Component Manager API does not work the way you'd naturally assume. First of all, it constructs a single 'instance' of a class before it initializes the class. Second, the memory reclamation system is really weird... and so on, for a page and a half.

  • shaddi 15 years ago

    Exactly. Code is for expressing how things are done.* Comments are for expressing why.

    * Or if you're not into the whole imperative languages bit, what things are done.

    • Mz 15 years ago

      Totally OT: How are you managing to use an asterisk as a footnote indicator and not ending up with the two asterisks invisible and the text in between in italic? I've seen this before and I've tried to replicate it and I can't do it. :-/

    • GrandMasterBirt 15 years ago

      That says what I wanted in less words. I like it. You probably have good comments.

  • Groxx 15 years ago

    I think this implies that .NET people love them.

    http://submain.com/products/ghostdoc.aspx

    Write a function like "getFoo" and it generates that as the description. Similar situation example: http://www.youtube.com/watch?v=yPaNRaub8N4#at=40

  • GrandMasterBirt 15 years ago

    I believe thats commenting on what your intentions are behind something unclear (or making something that looks wrong look right because of xyz) vs commenting on something that could easily be solved by better naming/conventions.

rgrove 15 years ago

Summary: "Bad comments are bad. Good comments are good."

mmaunder 15 years ago

Is the "Error establishing a database connection" on your site illustrative of their mischief at work?

[I don't comment unless it's a TODO or a DONT EVER... ]

abecedarius 15 years ago

Nobody writes clearer code than Peter Norvig, yet he usually gives everything a line-or-so doc comment -- e.g. http://norvig.com/lispy2.html. That's pretty far from the comments-should-be-rare credo. I like it.

My actual argument for that style sans appeals to authority: http://stackoverflow.com/questions/499890/what-is-your-perso...

dwc 15 years ago

It's nice to see that yet one more person has come to their senses. Not much new in that post, but sometimes that's ok.

The code itself is always the first, best, and final authority on how it works. Comments should add something beyond that, or they should not be there at all. The Thou Shalt Comment mindset is responsible for most bad comments. Ignore it and only comment when it will do the reader a service.

  • knieveltech 15 years ago

    In theory everything you've said is accurate. In practice it's usually really hard (if not impossible) to know exactly who "the reader" will be in six months. Nothing says "prima dona" to me quite like encountering a few thousand lines of someone else's code that they couldn't even be bothered to document the major functions.

    • dwc 15 years ago

      I comment for "me in six months" and that works ok. Not perfect, but ok. Nothing says "unthinking clod" to me like a few thousand lines of code with comments where I'm told that i is a loop index.

      • knieveltech 15 years ago

        I don't think anyone is advocating for comments explaining that $i is a loop index.

        • dwc 15 years ago

          I don't think so either. But that's what comes out of Thou Shalt Comment. And yes, I have seen loop index comments. Haven't you?

          I think we'd both agree if we saw a good comment. I just want to focus on the 'good' part rather than the 'comment' part.

          • knieveltech 15 years ago

            Of course I've seen loop index comments, and redundant variable declaration comments, and all manner of bad commenting. Thing is, I'll take a bad comment over blank code any day.

            Crap comments warn me ahead of time that I'm dealing with a developer who's either too inexperienced to know how to comment well or too sloppy to do a good job at it and in either case I need to be paying closer attention to their code than I might otherwise.

Groxx 15 years ago

Commented out code: frequently due to lack of version control, in my experience. Or one-off tests that should've been removed, but they forgot.

  /** Class FooBar - The purpose of this class is to do XYZ... */
  public class FooBar { ... }
>This is one of my favorite examples. Almost an entire line of comments wasted

Not if you use a documentation-builder. They frequently result in simple documentation turning into several lines (@param desc \n @param desc, and the like). /* * does xyz * / does not imply it is documenting that class and only that class. It could easily be meant for two or three classes in the same file, as they could be part of a greater whole.

bbuffone 15 years ago

I am currently getting a "Error establishing a database connection" for the page. I hope where ever that happens; there might be a comment in the code explaining why.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection