Август 13

Вынесение констант в переменные

Одна из вещей, которых нас не учили на программировании в универе — делать именованные константы. Просто один пример на JavaScript:

function convertTimeToTicks(unixTimestampMs) {
    return (unixTimestampMs - (3600 * 3 * 1000)) * 10000 + 621355968000000000;
}

Ну как? Хорошо ещё название функции хоть как-то подсказывает, что происходит. А вот так было бы с именованными константами:

function convertTimeToTicks(unixTimestampMs) {
    let millisecondsInHour = 3600000;
    let timezoneCorrectionMs = millisecondsInHour * 3;
    let ticksInMs = 10000;
    let ticksBeforeUnixTimestamp = 621355968000000000;
    return (unixTimestampMs - timezoneCorrectionMs) * ticksInMs + ticksBeforeUnixTimestamp;
}

Да, много строк, да кажется что печатаешь лишнее. Но зато постороннему (и вам через пару лет) сразу ясно, что берётся время в миллисекундах от начала эпохи UnixTimestamp, делается коррекция часового пояса, конвертируется в тики.

Ну а тики нужны для работы с системой электронного документооборота, это уже другая история.