Я хочу реализовать концепцию рабочего пространства. Это глобальная концепция - весь другой код будет взаимодействовать с одним экземпляром этого рабочего пространства. Рабочая область будет отвечать за поддержание текущего состояния системы (т. Е. Взаимодействие с моделью системы, сохранение состояния системы и т. Д.)
Так что, какова лучшая стратегия проектирования для моего рабочего пространства, учитывая, что это должно быть проверяемым (сейчас используется RSpec, но с удовольствием посмотрим на альтернативы).
Прочитав несколько проектов с открытым исходным кодом, я увидел 3 стратегии. Ничего из этого я не могу назвать «лучшей практикой».
Это:
- Включите класс
singleton
. Но насколько это проверяемый? Изменится ли глобальное состояние рабочего пространства между тестами?
- Реализовано все поведение как методы класса. Опять же, как вы это тестируете?
- Реализовано все поведение как методы модуля. Не совсем уверен в этом!
Что лучше? Или есть другой способ?
Спасибо,
Гордон
Редактировать
Когда я начал включать модуль 'singleton' во весь мой код, я понял, насколько тесно я создал свой код со ссылками на эти глобальные экземпляры повсюду.
Итак, я начал полностью их удалять и вместо этого передаю ссылки на глобальные экземпляры. Но теперь я иду по маршруту МОК - прохожу зависимости через мои конструкторы.
Это хорошая идея в Ruby? Или я что-то упустил?
Кстати, вы, наверное, поняли, что я новичок в Ruby!