this post was submitted on 27 Mar 2025
11 points (100.0% liked)

Programmer Humor

22314 readers
2067 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
 

This post was brought to you by this PMD rule.

Transcription

Why do we have this stupid code analyzer rule enabled anyway? Nobody writes code like this...

After telling them the lore why it's there:

You have seen such things before?

11 Times, as a matter of fact

top 10 comments
sorted by: hot top controversial new old
[–] koper@feddit.nl 2 points 2 weeks ago (1 children)

So what is the reason for doing it that way?

[–] i_stole_ur_taco@lemmy.ca 2 points 2 weeks ago (2 children)

I think this is just a picky optimization.

The first one runs the constructor to instantiate a new string, then gets its class (which is presumably a static property anyway). The second doesn’t have to run any constructor and just grabs the static class name from the type.

Maybe there’s more implementation nuance here but it seems like an opinionated rule that has zero effect on performance unless that code is being called thousands of times every second. And even then the compiler probably optimizes them to the same code anyway.

[–] spooky2092@lemmy.blahaj.zone 3 points 2 weeks ago (1 children)

Maybe there’s more implementation nuance here but it seems like an opinionated rule that has zero effect on performance unless that code is being called thousands of times every second

It's good practice to get in the habit of coding to only do the things you want/need to do rather than hoping the compiler does it for you.

This particular constructor call may be light, but there may be constructors that have a lot of overhead. Or you might be running alongside 1000 other processes who said the same thing and you start to see performance degradation.

[–] zea_64@lemmy.blahaj.zone 1 points 2 weeks ago (1 children)

These things add up if you're doing them all over a 1 million line codebase, by which point it's incredibly painful to claw back performance if you need it.

[–] ulterno@programming.dev 2 points 2 weeks ago* (last edited 2 weeks ago)

This seems like one of those cases where you don't want to be waiting until benchmarking.

It makes the code simpler anyway.

[–] ryannathans@aussie.zone 1 points 2 weeks ago

It's not picky, needlessly creating objects makes the garbage collector run a lot more. Especially if it's invoked frequently like Minecraft recreating the object for every block on the screen for every frame to render. The garbage collector is largely responsible for lag of up to a second occurring at random times.

[–] carrylex@lemmy.world 2 points 2 weeks ago (1 children)

Can't wait for all the other horror stories getting posted here :D

I just like knowing which episode this is from and the implication that removing the code analyzer will cause an explosion.

[–] SchwertImStein@lemmy.dbzer0.com 1 points 2 weeks ago

Your transcription doesn't have the code in it

[–] eager_eagle@lemmy.world 1 points 2 weeks ago* (last edited 2 weeks ago)

flake8-simplify has a bunch of rules like that for Python, most of which may be automatically fixed if you're using something like ruff, so you never have to spend time actually fixing it.