4 ms·
I like two of the three, but what is the advantage of commenting what the code is doing, when you can use a Trace or Debug message for that instead?
by __MatrixMan__ 2y ago
I like two of the three, but what is the advantage of commenting what the code is doing, when you can use a Trace or Debug message for that instead?
- PlunderBunny 2y agoNot the person you are replying to, but I would say that: - The code 'tells you' what it does - The comment for the code tells you what the author intended it to do. The gap between the two is where bugs can be found.
- readthenotes1 2y ago"The comment for the code tells you what the author intended it to do." Not quite. The comment for the code tells you what the author of the comment understood the code to do when hen wrote the comment.
- PlunderBunny 2y agoIt could be that too, but I think that presumes an order - that the comment was written after the code. If the comment was written before the code, then it would describe what the author was trying (intended) to do. Which also implies an order of course.
- g-b-r 2y agoYeah, absolutely check who wrote a comment before relying on it It's luckily rare for people to add wrong comments, though (and those who do should be publicly fustigated). By the way, please never state something as it were the truth if you're not sure that it is. Saying "I think" is perfectly fine, and might save people days of investigation.
- kristiandupont 2y agoNot the comments I write. I don't write what the code does or even what "I understand the code to do". I explain choices, especially ones that the next developer or my future self is likely to misunderstand when looking at the code.
- readthenotes1 2y agoBut what about a year later when someone's changed the code but not the comment?
- kristiandupont 2y agoI would say that I have observed something like this about as many times as someone has changed some semantics in a way that a variable or function name is no longer correct. That is to say: probably a few times in 25 years, but nothing compared to how much value I have received from them.
- ykonstant 2y ago>when hen wrote the comment. I've always said coding is a cottage industry!
- CRConrad 2y agohttps://en.wikipedia.org/wiki/Hen_(pronoun) https://en.wikipedia.org/wiki/Hen_(pronoun)
- __MatrixMan__ 2y agoI've got no trouble with that perspective, but wouldn't a log message scratch the same itch, plus more?
- PlunderBunny 2y agoI've never worked in a company where the commit log message wasn't just a link/reference to something in a bug tracker. I feel like a 'what this block of code does' comment is different from 'what is this change, and why did I make it' commit message.
- porridgeraisin 2y agoThey meant logging-logs in the code itself: log.Debugf("Foo is: %#v", ...) //You think: this is probably filtering code log.Debugf("Foo without X is: %#v", ...)
- edflsafoiewq 2y agoA function generally tells you what it does three times: once in the doc comment, once in the function name, and once in the body.
- worik 2y agoPutting too much emphasis on na,Ed leads to looooong names I've seen 64 character variable names Names should be mnemonic. Reminding, not describing
- XorNot 2y agoThis is what I tell people: if you're writing a one line code comment, write a debug log message instead. There's vanishingly few cases where this extra logging statements will ever be a problem and they can all be handled autonomously if they ever are - but it will save everyone else a ton of time in deployment.
- kristiandupont 2y agoYou must have extremely busy logs, then? Do you also do this with all the code that runs in loops?
- XorNot 2y agoDo you routinely run production services at debug or trace log level? The point is there's a big difference between "we've got a problem, we need to add logging and redeploy to try and isolate it" versus "we might have a problem, bump the logging level up on that service to see what's going on" (which with the right system you can do without even restarting).
- kristiandupont 2y agoNo, I don't. But even when I turn debug/trace on, I want the logs to have a reasonable signal to noise level.
- __MatrixMan__ 2y agoI'm not who you're asking, but I do the same Re: busy, no because I only enable debug logging when I need it Re: loops, I wrote a deduplicating logger, so if there are 200 identical messages from within a loop I see: {event: "thing happened"} {event: "thing happened", duplicates: 100, since: "2024-09-11T01:05:00Z", reason: "count reached"} That is, supposing that it's set to saturate at 100 events and they all happen fast enough that it doesn't reset the count. In this case it'll log another batch of 100 on the 201st event. I think it's important to log the first one immediately, just in case you want to alert on that message. It wouldn't do to wait for the other 99 before raising the alarm. I wrap my loggers in deduplicators only when I'm about to hand them off to a loop. Otherwise it's the normal ones.