Первое руководство 70-х: getCurrentDate (). Кусок пирога. Мы живем в 20-е. Времени больше нет.

Проблемы

  • Связь
  • Хрупкие тесты
  • Проблемы с часовым поясом

Решения

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

Образец кода

Неправильный

Правильно

Обнаружение

Мы должны запретить политики глобальных функций. Нам нужно связать случайные и подключаемые источники времени.

Вывод

Date.today() , Time.now(), и другие глобальные системные вызовы доставляют неприятный запах.

Так как тесты должны проходить под полным экологическим контролем. Мы должны легко настраивать время, перемещать его вперед и назад и т. Д.

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

Программисты всегда пренебрегают течением времени. Это делает объекты изменяемыми, а дизайн плохим и связанным.

связи



Больше информации



Теги

  • Глобалы

В программировании сложнее не решать проблемы, а решать, какие проблемы решать.

Пол Грэм



Эта статья является частью серии CodeSmell.