Задать вопрос
@dipwoodle

Форматировать дату без библиотеки. Всего пару функций на проект. Какое архитектурное решение выбрать?

В проекте дату нужно выводить в двух форматах:
- From now - 4 min ago
- MMM, YYYY - Jan, 2014

Пример:
Handlebars.registerHelper "date_format", (date, options) ->
    moment(date).format('MMM, YYYY')

  Handlebars.registerHelper "from_now", (date, options) ->
    moment(date).fromNow()

<i class="icon-clock"></i>
{{from_now date_posted}}
...
<li><span>Start Date:</span> {{date_format start_date}}</li>


Задача - выпилить библиотеку moment, ибо ради двух функцию грузить 11.6k gz для проекта много.

Вопрос: как архитектурно правильнее это сделать?

Варианты:
1. Сделать отдельный маленький модуль DateUtil, пихнуть туда две функции кастомного форматирования. Добавить два вью хелпера, которые вызывают функции DateUtil. В шаблонах вызываем хелперы.
2. Не делать отдельного модуля, написать логику форматирования прямо во вью хелперы.
3. Ваше решение.

Критика предложенных вариантов
1.
- Лишний модуль, если форматирование не будет использоваться нигде, кроме вьюшек
- Продолжение пункта выше: лишняя композиция. Тело хелпера просто вызывает функцию DateUtil
- Не ясно как назвать метод для второго типа дат
2.
- Нет возможности использовать вью хелпер, если форматирование понадобиться где-то кроме вьюшке
- Не ясно как назвать метод для второго типа дат
  • Вопрос задан
  • 2332 просмотра
Подписаться 1 Оценить 2 комментария
Решения вопроса 1
Ответить на следующие вопросы себе:
1.Много ли дат добавится в проект в ближайшей перспективе (допустим 6 месяцов).
2.Какой из вариантов я напишу быстрее.
3.Сложно ли будет отрефакторить, если я сейчас напишу просто, а потом мне понадобится более сложная система.

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

И да, первый вопрос здесь самый главный. Потому что проектируем мы не для того что бы было красиво, а для того что бы в последствии без проблем изменять код. Всегда нужно думать какие изменения могут произойти.

Т.Е. в вашем случае скорее всего ответ - 2.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы