Code Smell 84 - Max < Min (Javascript)

Code Smell 84 - Max < Min (Javascript)

Some functions do not behave as expected. Sadly, most programmers accept them.

TL;DR: Don't trust max() and min() functions. Just ignore them.

Problems

  • Principle of least astonishment

  • Bijection Violation.

  • Unexpected Results

Solutions

  1. Use mature languages.

  2. Avoid max() and min() functions.

  3. Model Infinites carefully.

Sample Code

Wrong

console.log(Math.max() > Math.min());

//returns false

console.log(Math.max());

//returns -Infinite
console.log(Math.max() > Math.min());
console.log(Math.max());

//returns Exception. Not enough arguments passed.
//Max requires at least one argument

Detection

These functions belong to the standard Math library. Therefore, they are not easy to avoid.

We can block them on our linters.

Tags

  • Javascript

Conclusion

We need to be very careful using functions that violate real-world concepts using language tricks.

Relations

More Info

Credits

Photo by Cris Baron on Unsplash

Inspired by @Oliver Jumpertz


Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.

Rick Cook


This article is part of the CodeSmell Series.