Comments 5
Ура, вы изобрели feature toggle!
Мой проект состоит из такого количества классов, что шаблон «стратегия» мне кажется здесь абсолютно неуместным на глобальном уровне. Применить его конечно можно, но тогда сразу вешаться. Концов не найдешь потом. А вот варианты алгоритмов спроса реализуют разные классы, так что локально это работает.
Когда-то делали похожим образом, но тут есть проблемы:
1. При рефакторинге большой шанс сломать старый код. Например, переделываете вы механику осад, в объекте осад были поля String startTime, String endTime, Date date. Переходите на Джаву 8, решили сделать через правильные Instant: Instant start, Instant end. Старый код работает со старыми полями (ожидая, что они not null), новый — с новыми. Большая вероятность, что тут что-то сломается, особенно во время первода часов.
2. Трудно делать миграции базы данных. Тот же пример с осадами. Старый код вставляет в базу 3 старых поля, новый — 2 новых. При этом падает с ошибками, что не указаны значения для not null полей.
3. Не всё можно спрятать за правами доступа. Особенно, если это переделка уже работающих механик.
1. При рефакторинге большой шанс сломать старый код. Например, переделываете вы механику осад, в объекте осад были поля String startTime, String endTime, Date date. Переходите на Джаву 8, решили сделать через правильные Instant: Instant start, Instant end. Старый код работает со старыми полями (ожидая, что они not null), новый — с новыми. Большая вероятность, что тут что-то сломается, особенно во время первода часов.
2. Трудно делать миграции базы данных. Тот же пример с осадами. Старый код вставляет в базу 3 старых поля, новый — 2 новых. При этом падает с ошибками, что не указаны значения для not null полей.
3. Не всё можно спрятать за правами доступа. Особенно, если это переделка уже работающих механик.
Sign up to leave a comment.
Три ветки продукта и контроль версий