Hacker News new | past | comments | ask | show | jobs | submit login

You may not remember, but you and I have had this discussion while working together. You were probably one of the people mocking me. ;-)

> I never actually trust that documentation to be accurate or up-to-date. I expect it to be misleading and time-wasting, and so I only trust the code itself.

Two things here:

1) I don't implicitly trust comments. Obviously, the code is the definitive source of reference, and where the comment differs from the code, it only means that something interesting happened. But...

2) I believe in commenting "why" or "who", and less often, "what" (and rarely "how"). My experience is that "why" comments age well -- even if the code drifts, the intent of a method or class changes infrequently.

For example:

  # I (timr) wrote this method because I needed a way to 
  # invert the index for {situation}, and {method a} and
  # {method b} didn't work because {reason}.
is a better, more evergreen comment than:

  # this method inverts the index for {situation}.
which is far better than:

  ## 
  # inverts index.
  # @args foo, bar, baz
  #
Unfortunately, nearly all doc generation software encourages the latter, and so many comments are pretty darned useless. The first example is great because even if {method a} and {method b} and {reason} fail to be true in the future, some other programmer can come along and read it and say "ok, I understand why this was written this way, and the preconditions motivating it are no longer valid. maybe I can refactor."

This is hugely valuable.




> some other programmer can come along and read it and say "ok, I understand why this was written this way, and the preconditions motivating it are no longer valid. maybe I can refactor."

I appreciate having this kind of information available, but it often gets too verbose for my taste to keep as inline comment. For this, I typically push this kind of documentation to the commit messages. This however requires very disciplined use of git: you need to "massage" your commits so each of them is a self-contained change, and OFC avoid squashing during PR merges. Then, a git blame + git show will bring up the relevant information.


Oh wow! No, sadly I don't remember that, nor much else from that long ago. That's funny (assuming I wasn't a dick about mocking you!)

I actually completely agree with your ordering of least-useful to most-useful comments. I still tend to view these most-useful comments as just kind of interesting historical tidbits, rather than something that really helps me do my job, but at least we agree on the order :)


> That's funny (assuming I wasn't a dick about mocking you!)

Nah...I'm joking about you mocking me. We definitely had this conversation a few times, though.


You two bumping into each other here was delightful to read.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: