Месяц: Август 2021

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

    Одна из вещей, которых нас не учили на программировании в универе — делать именованные константы. Просто один пример на 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, делается коррекция часового пояса, конвертируется в тики.

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