• no (unregistered)

    i imagine the line immediately before reads: generate a private key

  • (nodebb)

    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.

  • (nodebb)

    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.

  • (nodebb) in reply to MaxiTB

    Ironically if this is C/C++/C# it won't matter because the compiler will optimize it away.

    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.

  • fanguad (unregistered) in reply to MaxiTB
    Comment held for moderation.
  • Darren (unregistered)

    At least y and z per guaranteed to be random...

  • OldCoder (unregistered)
    Comment held for moderation.
  • Randal L. Schwartz (github)

    As we've often said, there are TWO important audiences for the source code... the compiler, and the person having to maintain it!

  • (nodebb)

    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.

  • (nodebb)

    someone wanted them set equal

    Some variables are more equal than others.

  • (nodebb) in reply to MaxiTB

    "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.

Leave a comment on “Doing the Assignment”

Log In or post as a guest

Replying to comment #705571:

« Return to Article