Со временем моя команда создала центральный класс, который обрабатывает совокупность обязанностей и насчитывает более 8000 строк, причем все они написаны от руки, а не сгенерированы автоматически.
Мандат истек. Нам нужно провести рефакторинг класса монстров. Самая большая часть плана состоит в том, чтобы определить категории функциональности в их собственных классах с отношениями «имеет-связь» с классом монстров.
Это означает, что многие ссылки, которые в настоящее время читаются так:
var monster = new orMonster();
var timeToOpen = monster.OpeningTime.Subtract(DateTime.Now);
скоро будет читать так:
var monster = new Monster();
var timeToOpen = monster.TimeKeeper.OpeningTime.Subtract(DateTime.Now);
Вопрос в том, как на Земле мы координируем такое изменение? Ссылки на «orMonster» замусоривают каждый бизнес-класс. Некоторые методы вызываются буквально тысячами мест в коде. Гарантируется, что в любой момент, когда у нас будет такая возможность, кто-то еще (возможно, несколько человек) в команде получит проверенный код, который вызывает свойство .OpeningTime
Как вы координируете такое крупномасштабное изменение без остановки производительности?