stop-if
v1.0.3
Published
An assert statement that throws an error if true. Does not run in production
Readme
stop-if
stop-if is a tiny function that fills the need of an assert statement in javascript. However, if the function is run in a production environment:
process.env.NODE_ENV === "production"then stop-if will do nothing.
The goal of stop-if is to catch bugs early without ever risking uncaught production errors.
Install
With npm
$ npm install --save stop-ifWith yarn
$ yarn add stop-ifExample
import stopIf from 'stop-if';
function addToList(item) {
stopIf(list == undefined)
list.add(item)
}You can also add a message if you would like:
stopIf(foo, "Fee fi fo fum, I smell the code of a hum-ity-dum.");Why is this not called assert?
Javascript testing frameworks frequently use terms like assert or expect to prove a statement. stopIf is named differently to avoid any confusion with these sorts of statements.
When should I use stop-if?
Stop-if, as with all assert statements, should be used as a way of expressing original intent of a function. It should be used to prove pre or post conditions or to standardize a way a function should be used.
When should I not use stop-if?
You should not use stop-if as a regular throw statement. A regular throw statement should only be used in excepttional circumstances that are theoretically possible in the function, but not desired. For example, opening a file and then noticing that it doesn't exist would be an exception that you should use a regular throw statement.
It follows that you should not ever attempt to catch a stopIf function. The function will not run in production and therefore your catch is entirely useless.
Never do this:
try { // no
stopIf(true); // no
} catch (Error e) { // no
console.error(e); // no
} // no wtf no