On Mon, Jul 21, 2025 at 07:26:07AM +1000, Warren Toomey via COFF wrote:
So this isn't a rant so much as a request for
alternate perspectives. If
you have a spartan commenting style, why? Can you read your code and see
all the implications, or do you dislike lots of comments, or do you write
more external documentation etc.?
Well, in a long lived code base, comments can rot. I'd much rather have
to read the code and figure it out than have a comment that is no longer
true send me down a wild goose chase (it's happened more than I care to
think about).
I tend to comment structures quite a bit, globals and locals,
have a block comment above the function saying what it is and it
gets sparse from there. There may be inline comments but they need
to do something a lot more useful than
i++; // increment i <-- this sort of comment is worse than useless
I also have a style that is
int *p = 0;
char *foo = 0;
int ret = 0;
// lots of code
err: ret = -1;
out: if (p) free(p);
if (foo) free(foo);
return (ret);
}
Most of the BitKeeper code follows that style, no unitialized pointers,
we did use a lot of
unless (p = malloc(whatever)) goto err;
style of programming. Memory management in C is primitive so you have to
adopt some consistent style to avoid errors just because someone did
something different.
When I taught, I had two mantras about comments:
Code explains how, comments explain why.
Code as if the person who takes over your codebase
is a crazed psychopath who knows where you live.
I always said "optimize for reading, not writing". I've also said
"anything
that you wrote 6 months ago, you will approach it as if it is someone else's
code".