Code Smell 42 - Warnings/Strict Mode Off

Maxi Contieri - Dec 4 '20 - - Dev Community

Compilers and warnings lights are there for help. Don't ignore them.

Problems

  • Missed Errors

  • Ripple Effect

  • Fail Fast

Solutions

  1. Enable all warnings

  2. Enable preconditions and assertions in production.

  3. Fail fast

  4. Design by contract

Sample Code

Wrong

array = [];
console.log(array['1'])
//undefined but keep going on

hiddenGlobal = "I am a global"

console.log(hiddenGlobal)
//  I'm a global
Enter fullscreen mode Exit fullscreen mode

Right

array = [];
console.log(array['1'])
//Index Error

noGlobal = "I am not a global"

console.log(noGlobal)
// ReferenceError

var noGlobal = "I am not a global"

console.log(noGlobal)
// I am not a global
Enter fullscreen mode Exit fullscreen mode

Detection

Most languages have warning levels. We should turn most of them ON.

We should run linters to statically analyze our code for potential problems.

# Tags

  • Fail Fast

Conclusion

If we ignore warnings and code moves on sooner or later it will fail.

If the software fails later it will be very difficult for us to find root cause.

Defect will likely be near first warning and far away from the crash.

If we follow the Broken Windows Theory, we should not tolerate any warnings, so a new issue will not pass unnoticed on a sea of tolerated warnings.

Relations

More info

Credits

Photo by Noah Dominic Silvio on Unsplash


One man's crappy software is another man's full time job.

Jessica Gaston



This article is part of the CodeSmell Series.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .