← #80 Create a polyfill
#81

Keep the calculation of a magic number

Topics: JavaScript

Let's say that we want to calculate the number of difference days between two given dates.
By simply using the - operator, it's easy for us to calculate the differences between two date objects, date and otherDate for example:

const diff = Math.abs(date - otherDate);

The function returns the number of milliseconds. In order to get the number of days, we have to divide it by 86400000:

Math.ceil(diff / 86400000);

We know that 86400000 is the total number of milliseconds in a day. The code is still working fine until there's another people on the team looking at it, and it takes them time to realize what the number 86400000 is.

To make the code more readable and easy to maintain, we should replace the magic number with its calculation:

// Better version
const diffDays = (date, otherDate) => (
Math.ceil(Math.abs(date - otherDate) / 1000 * 60 * 60 * 24)
);

If the number is used across different places, for example when we create a library for manipulating dates, then it's recommended to declare the magic number as a constant:

// The best version
// constants.js
const MILLISECOND_DAY = 1000 * 60 * 60 * 24;
export { MILLISECOND_DAY };

Then reuse it later:

import { MILLISECOND_DAY } from './constants';

const diffDays = (date, otherDate) => (
Math.ceil(Math.abs(date - otherDate) / MILLISECOND_DAY)
);

More

Fix a typo or suggest an improvement
#82 Create an array with conditional elements