you are viewing a single comment's thread
view the rest of the comments
[–] 67 points 2 years ago (7 children)

Ew no.

Abusing language features like this (boolean expression short circuit) just makes it harder for other people to come and maintain your code.

The function does have opportunity for improvement by checking one thing at a time. This flattens the ifs and changes them into proper sentry clauses. It also opens the door to encapsulating their logic and refactoring this function into a proper validator that can return all the reasons a user is invalid.

Good code is not "elegant" code. It's code that is simple and unsurprising and can be easily understood by a hungover fresh graduate new hire.

  • source
  • hideshow 14 child comments
  • [–] 47 points 2 years ago (1 child)

    Agreed. OP was doing well until they replaced the if statements with ‚function call || throw error’. That’s still an if statement, but obfuscated.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 6 points 2 years ago (1 child)

    Don't mind the || but I do agree if you're validating an input you'd best find all issues at once instead of "first rule wins".

  • source
  • parent
  • hideshow 2 child comments
  • [–] 14 points 2 years ago

    This is the most important thing I've learned since the start of my career. All those "clever" tricks literally just serve to make the author feel clever at the expense of clarity and long-term manintainability.

  • source
  • parent
  • [–] 6 points 2 years ago (2 children)

    I mean, boolean short circuit is a super idiomatic pattern in Javascript

  • source
  • parent
  • hideshow 4 child comments
  • [–] 5 points 2 years ago*

    Good code is not “elegant” code. It’s code that is simple and unsurprising and can be easily understood by a hungover fresh graduate new hire.

    I wouldnt go that far, both elegance are simplicity are important. Sure using obvious and well known language feaures is a plus, but give me three lines that solve the problem as a graph search over 200 lines of object oriented boilerplate any day. Like most things it's a trade-off, going too far in either direction is bad.

  • source
  • parent