Здравствуйте, gandjustas, Вы писали:
G>Срочно брось этим заниматься и решай конкретную задачу.
Три пункта, перечисленных в начале старт-поста, собственно, входят в постановку конкретной задачи: полное покрытие логики тестами, тестирование в изоляции от хранилища, возможность максимально безболезненной замены реализации хранилища в будущем.
Наверное, сюда же еще можно добавить — минимизация риска массивного рефакторинга, который мог бы потребоваться в случае изначально неверно выбранного архитектурного решения.
Возможно, вы знаете лучшее решение — в таком случае, поделитесь им, пожалуйста. С другой стороны, обсуждать подходы из серии "чик-чик и в продакшен" и экстремального программирования (постоянный рефакторинг), наверное, не имеет большого смысла, так как, очевидно, они противоречат самой постановке задачи.