- Feature Articles
- CodeSOD
-
Error'd
- Most Recent Articles
- Scrollpocalypse
- Fast Quick
- 12345
- Said Different
- Ai Dios Mio
- Unrewarding
- Good Time
- Hello, New Mexico!
-
Forums
-
Other Articles
- Random Article
- Other Series
- Alex's Soapbox
- Announcements
- Best of…
- Best of Email
- Best of the Sidebar
- Bring Your Own Code
- Coded Smorgasbord
- Mandatory Fun Day
- Off Topic
- Representative Line
- News Roundup
- Editor's Soapbox
- Software on the Rocks
- Souvenir Potpourri
- Sponsor Post
- Tales from the Interview
- The Daily WTF: Live
- Virtudyne
Admin
i imagine the line immediately before reads:
generate a private keyEdit Admin
Ironically if this is C/C++/C# it won't matter because the compiler will optimize it away. Not sure about other languages, a lot of them have way less optimization going on that a lot people give them credit for...
But yeah, constructs like that are weird and I found them mostly in code with languages that enforce definition at declaration like Java.
Edit Admin
You could argue that this is more of a WTF than a lot of the other code we get here. A 100-line mess could be the result of one developer that just can't keep in their head everything that's happening, or it could be the result of 10 different developers adding stuff over time and never really understanding what the code is doing.
But something like this should only take two seconds to see the stupidity.
Edit Admin
Ummm... the thing that mattered in the first place wasn't the extra instructions that would be executed. A coding pattern that doesn't hurt performance but makes it difficult to understand what the code is doing is a very bad thing - even it it doesn't have any negative performance attributes.
Admin
At least y and z per guaranteed to be random...
Edit Admin
As we've often said, there are TWO important audiences for the source code... the compiler, and the person having to maintain it!
Edit Admin
I suspect the original version didn't have the x = y = z line, but someone wanted them set equal and some PHB disallowed removing lines or versioning code.
Edit Admin
Some variables are more equal than others.
Edit Admin
"I found them mostly in code with languages that enforce definition at declaration like Java."
Java doesn't enforce definition at declaration - it enforces definition before a read (or return) of the variable (so if you want it to be zero or null you have to set it to those values before you read it for the first time, rather than having a default null/0 value that was never intended).
But IME a lot of Java students learn that "rule" that definition is required at declaration because they get uninitialized variable compiler errors and doing that makes compiler errors "go away" (even if it doesn't actually fix their code) so they walk away from their intro classes thinking they need to do that. And this bit of code looks exactly like the kind of code I'd see an intro student learning Java do after they've learned that non-existent rule, so I suspect that this is code from someone who doesn't quite grasp the language they're using whatever language it is.