this post was submitted on 10 Jun 2024
293 points (100.0% liked)

Programmer Humor

21779 readers
2068 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 2 years ago
MODERATORS
293
submitted 9 months ago* (last edited 9 months ago) by [email protected] to c/[email protected]
 

Comment from my group project teammate. You don't need to comment every line lol

top 50 comments
sorted by: hot top controversial new old
[–] [email protected] 72 points 9 months ago* (last edited 9 months ago) (4 children)

Writing good comments is an art form, and beginner programmers often struggle with it. They know comments mostly from their text books, where the comments explain what is happening to someone who doesn't yet know programming, and nobody has told them yet that that is not at all a useful commenting style outside of education. So that's how they use them. It usually ends up making the code harder to read, not easier.

Later on, programmers will need to learn a few rules about comments, like:

  • Assume that whoever reads your code knows the programming language, the platform and the problem domain at least in general terms. You are not writing a teaching aid, you are writing presumably useful software.
  • Don't comment the obvious. (Aside from documentation comments for function/method/class signatures)
  • Don't comment what a line is doing. Instead, write your code, especially names for variables, constants, classes, functions, methods and so on, so that they produce talking code that needs no comments. Reserve the "what" style comments for where that just isn't possible.
  • Do comment the why. Tell the reader about your intentions and about big-picture issues. If an if-statement is hard to parse, write a corresponding if clause in plain English on top of it.
  • In some cases, comment the "why not", to keep maintenance programmers from falling in the same trap you already found.
[–] [email protected] 20 points 9 months ago* (last edited 9 months ago)

I would argue that if an if statement is hard to parse, replace the entire condition with simpler to read (but way more specific) variables that you assign values (the original condition expression) in the line above. No need for comments in that case

[–] [email protected] 13 points 9 months ago* (last edited 9 months ago) (2 children)

Good advice, just to add to this:

  • Comments should be part of code review, having at least two pairs of eyes on comments is crucial. Something that's obvious to one person maybe isn't so obvious to another. Writing good comments is as hard or harder than writing good code, so having it checked for mistakes and quality is a must
  • Comments aren't the actual documentation and aren't a reason not to write documentation to go along with your code. Often I see larger projects where each class and function is documented in comments, but the big picture and the how and why of the overall structure is completely missing. Remember that in the real world you often have a lot of folk that need to understand how the code works, who aren't programmers themselves. They can't read the code or don't have access to the code. Writing documentation is still important.
  • Please for the love of god when you change code, check if the comments need to be updated as well. Not just around the immediate area, but also the entire file/class and related files. I've worked on large codebases before with a high wtf factor and having the code do something different to or even opposite the comments is a nightmare. I'd rather have no comments than wrong comments.
[–] [email protected] 7 points 9 months ago

I'd rather have no comments than wrong comments.

I’ve seen cases of outdated comments in the same line of code it’s describing. People suck at maintaining comments.

[–] [email protected] 2 points 9 months ago (1 children)

Do comment the why

In this day and age of source control I don’t think this is fully necessary. If you want to know the why, you can look into the commit history and see which ticket is connected to it. There you might even see the discussions around the ticket as well. But this requires good source control discipline.

It has helped me many times.

[–] [email protected] 12 points 9 months ago* (last edited 9 months ago) (2 children)

Why not put the "why" in a comment and save people the job of dredging through old commits and tickets to figure out what the code is for? I'd thank someone for saving me the hassle.

[–] [email protected] 2 points 9 months ago

You can also do that if you think it’s useful.

Going back to the original ticket can offer far more info than what any “why” comment can give. You can see how old it is, if there are any connected tickets, who were involved with it, step by step instructions how to reproduce the bug, etc.

load more comments (1 replies)
[–] [email protected] 62 points 9 months ago (1 children)

Software devs in general seem to have a hard time with balance. No comments or too many comments. Not enough abstraction or too much, overly rigid or loose coding standards, overoptimizing or underoptimizing. To be fair it is difficult to get there.

[–] [email protected] 40 points 9 months ago

It's an art, not a science. Which is where I think a lot of people misunderstand software development.

[–] [email protected] 23 points 9 months ago (5 children)
[–] [email protected] 3 points 9 months ago

This brings back trauma

load more comments (4 replies)
[–] [email protected] 17 points 9 months ago

More useful would be what sort of values is acceptable there. Can I use team number 2318008? Can I use team 0? If not, why not? WHY / WHY NOT is often useful.

[–] [email protected] 16 points 9 months ago (4 children)

I am not a programmer, I just barely wrote one bash script in the past. But I'd say more comments are better than too few.

When I later wanted to edit it, I got completely lost. I wrote it with absolutely no comments.

[–] [email protected] 23 points 9 months ago (2 children)

Bash is a shit „language” and everytime i need to write the simplest thing in it I forget which variable expansion I should use and how many spaces are the right amount of spaces. It’s impossible to write nice to read bash, but even in C you can write code that comments itself.

[–] [email protected] 10 points 9 months ago (2 children)

It's perfectly possible to write nice to read bash, and to also make is safe to run and well-behaved on errors.

But all the three people that can do those (I'm not on the group) seem to be busy right now.

load more comments (2 replies)
[–] [email protected] 6 points 9 months ago

bash sucks but i don’t agree. Some simple rules like regularly use intermediate variables with useful names and never use shorthand arguments goes a long way.

[–] [email protected] 5 points 9 months ago* (last edited 9 months ago) (1 children)

Wrong. Too many comments makes the code messy and less readable and also it provides ZERO value. Just look at the post, WHAT is useful about ANY of that comment???

All it is is a waste of goddamn space, literal junk crowding the actual code.

I love how you admit you aren’t a developer but feel quite confident to tell us that a larger number of comments automatically means it’s better.

This person articulated it better than I: https://midwest.social/comment/10319821

[–] [email protected] 3 points 9 months ago (1 children)

Too many is still better than too few, and it's not close. Useless comments make parsing a bit harder. Missing comments can mean hours of research.

[–] [email protected] 4 points 9 months ago* (last edited 9 months ago)

These are arguments talking past each other. Sure 1 useful comment and 9 redundant ones can be better than zero, but comments are not reliable and often get overlooked in code changes and become misleading, sometimes critically misleading. So often the choice is between not enough comments versus many comments that you cannot trust and will sometimes tell you flat-out lies and overall just add to the difficulty of reading the code.

There's no virtue in the number of comments, high or low. The virtue is in the presence of quality comments. If we try to argue about how many there should be we can talk past each other forever.

[–] [email protected] 3 points 9 months ago

I've been programming for almost 25 years and I'd still rather see too many comments than too few. A dogmatic obsession with avoiding comments screams "noob" just as much as crummy "add 1 to x" comments. If something is complex or non-obvious I want a note explaining why it's there and what it's supposed to do. This can make all the difference when you're reviewing code that doesn't actually do what the comment says it should.

load more comments (1 replies)
[–] [email protected] 14 points 9 months ago (2 children)

Reminds me of every fuckin PR I do for the Indian contractors that were sold to us as “senior devs” but write code like a junior and you better believe every other line has the most obvious fucking comment possible

[–] [email protected] 7 points 9 months ago

Better than writing beginner level crap that is at the same time super cryptic and not documenting at all. We have a bunch of that in our codebase and it makes me wonder why these devs are writing extension methods for functionality already built into the standard libraries.

[–] [email protected] 2 points 9 months ago

Better than writing beginner level crap that is at the same time super cryptic and not documenting at all. We have a bunch of that in our codebase and it makes me wonder why these devs are writing extension methods for functionality already built into the standard libraries.

[–] [email protected] 14 points 9 months ago (1 children)

There is usually no such thing as too many comments. There is a point to keep them to the point though

[–] [email protected] 2 points 9 months ago (2 children)

Who upvotes these terrible takes???

Give this comment a read: https://midwest.social/comment/10319821

[–] [email protected] 5 points 9 months ago (1 children)

Well on Reddit, programmerhumor was mostly populated by people weirdly proud of how bad they are at their job, so I don't see how Lemmy was going to be different.

load more comments (1 replies)
load more comments (1 replies)
[–] Klnsfw 12 points 9 months ago (1 children)

It's much worse to learn development while being lazy about commenting. Or adding them all just before sending your source code to the teacher.

[–] [email protected] 10 points 9 months ago* (last edited 9 months ago)

Lol that's exactly what this was. I wrote this python script, and he went through and added comments like this a day before the deadline.

Not trying to throw shade on him though, it's more the university's fault for not explaining what makes a useful comment. I just thought it was funny

[–] [email protected] 12 points 9 months ago

Let the code explain the „how“, use comments to explain the „why“.

[–] [email protected] 9 points 9 months ago (3 children)

When people read my code, they usually say they like that I comment so much, it makes it easier to understand what's happening.

I say, I comment so much because my memory is terrible. It's for me!

[–] [email protected] 4 points 9 months ago (1 children)

I've worked in a few startups, and it always annoys me when people say they don't have time to do it right. You don't have time not to do it right - code structure and clarity is needed even as a solo dev, as you say, for future you. Barfing out code on the basis of "it works, so ship it" you'll be tied up in your own spaghetti in a few months. Hence the traditional clean-sheet rewrite that comes along after 18-24 months that really brings progress to its knees.

Ironically I just left the startup world for a larger more established company and the code is some of the worst I've seen in a decade. e.g. core interface definitions without even have a sentence explaining the purpose of required functions. Think "you're required to provide a function called "performControl()", but to work out its responsibilities you're going to have to reverse-engineer the codebase". Worst of all this unprofessional crap is part of that ground-up 2nd attempt rewrite.

[–] [email protected] 4 points 9 months ago

Ironically I just left the startup world for a larger more established company and the code is some of the worst I’ve seen in a decade. e.g. core interface definitions without even have a sentence explaining the purpose of required functions. Think “you’re required to provide a function called “performControl()”, but to work out its responsibilities you’re going to have to reverse-engineer the codebase”. Worst of all this unprofessional crap is part of that ground-up 2nd attempt rewrite.

I think this is actually quite common in commercial code. At least, for most of the code I've seen. Which is why I laugh most of the time when people imply commercial code is better than most open source code. It's not, you just cannot see it.

load more comments (2 replies)
[–] [email protected] 9 points 9 months ago (1 children)
[–] [email protected] 3 points 9 months ago

The problem is that many don’t leave the starting line

[–] [email protected] 4 points 9 months ago* (last edited 9 months ago)

#tell me what it's about

print("tell me about it")

[–] [email protected] 4 points 9 months ago* (last edited 9 months ago)

#team number = 1 team_num = 1

Comments lie to you!

[–] [email protected] 3 points 9 months ago* (last edited 9 months ago) (1 children)

It's not that bad. It definitely helps in long functions.

I'm an advocate for code commenting itself, but sometimes it's just better to comment on what you're doing, and in those cases it helps to over commentate.

Instead of letting the reader interweave code reading and comment reading, I think it's better to do either. Either you go full self describing code, letting the reader parse it as code,m, or you abstract everything, making it more of an explanation of your reasoning, and abstract lines that may look too complicated.

Not every comment needs to be useful, but I still write them to not have this switch between reasoning and thinking in code. It can also double as rubber duck debugging too!

load more comments (1 replies)
[–] [email protected] 2 points 9 months ago

me in a group project ending up doing all the work

load more comments
view more: next ›