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
- Use mature languages. 
- Avoid max() and min() functions. 
- Model Infinites carefully. 
Sample Code
Wrong
console.log(Math.max() > Math.min());
//returns false
console.log(Math.max());
//returns -Infinite
Right
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
 
    Code Smell 69 - Big Bang (JavaScript Ridiculous Castings)
Maxi Contieri ・ May 4 '21
More Info
Credits
Photo by Cris Baron on Unsplash
Inspired by @oliverjumpertz
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
 
    Software Engineering Great Quotes
Maxi Contieri ・ Dec 28 '20
This article is part of the CodeSmell Series.
 
 
              
 
    
Top comments (0)