Лучшие практики по инициализации значений даты и времени, избегая дублирования кода - PullRequest
0 голосов
/ 05 октября 2018

У меня есть множество функций задач планирования, которые полагаются на многочисленные вспомогательные переменные для значений даты и времени в моем проекте, например, представьте 10 + строк, таких как:

let today = moment(),
  yesterday = moment().subtract(1, 'days'),
  startOfToday = moment(today).startOf("day"),
  endOfToday = moment(today).endOf("day");

Я не могу поместить этот вид кода инициализации вначало файла myCode.js, поскольку это приводит к ошибке - функции в myCode.js будут ссылаться на устаревшие даты и время.Например, сегодня всегда будет указывать дату и время, когда был запущен сервер узла.

Пока я инициализирую даты в каждой функции, но это приводит к дублированию кода.

Есть ли более чистый способ сделать это?

Опции, которые я рассматриваю:

a) Создайте функцию, которая инициализирует все часто используемые даты, и вызовите ее в верхней части функции.

b) встроите момент.js значения даты и времени и вообще избавление от вспомогательных переменных (работает, но затрудняет чтение кода).

Советы приветствуются,

Спасибо,

-S.Arora

1 Ответ

0 голосов
/ 05 октября 2018

Один из способов сделать это - создать модуль util со всеми этими удобными методами, которые затем можно будет импортировать в любой из необходимых вам файлов.

Поскольку ваши выходные данные всегда датированыу вас может быть один getDate метод, который будет принимать строку:

getDate('yesterday')
getDate('endOfToday')

Таким образом, это довольно читабельно, что вы пытаетесь сделать, и в этом модуле utils вы можете просто иметь оператор switch, который основан настрока, которую вы возвращаете для правильного вывода даты:

switch(dateString) {
  case 'today':
     return moment()
  case 'yesterday':
     return moment().subtract(1, 'days')
...
}

Если вам не нравится передавать strings (хотя момент так много делает), вы можете создать замороженный класс в ES6 дляимитировать перечисление и передавать / работать с ним.

Вы также можете создать одноэлементный класс, который имеет их, и использовать это ... основная идея состоит в том, чтобы иметь один метод для возврата вам дат... заводской шаблон .

...