В качестве части сохранения большого фрагмента устаревшего кода нам необходимо изменить часть дизайна в основном, чтобы сделать его более проверяемым (модульное тестирование). Одной из проблем, которые нам необходимо решить, является существующий интерфейс между компонентами. Интерфейс между двумя компонентами - это класс, содержащий только статические методы.Поиск предложений по перепроектированию интерфейса
Упрощенный пример:
class ABInterface {
static methodA();
static methodB();
...
static methodZ();
};
Интерфейс используется компонента А, так что различные методы могут использовать ABInterface :: Methoda() для того, чтобы подготовить некоторые входные данные, а затем вызвать соответствующие функции в пределах компонента В.
Сейчас мы пытаемся перестроить этот интерфейс по различным причинам:
Расширение нашего тестового покрытия блока - мы должны решить этот д необходимо предусмотреть соответствие между компонентами и заглушками/ложными данными
Интерфейс между этими компонентами отличается от оригинальной конструкции (т.е. перед этим классом интерфейса создается множество новых функций, используемых для межкомпонентного i/f).
- Код старый, сильно изменился с течением времени и нуждается в рефакторинге.
Это изменение не должно быть разрушительным для остальной части системы. Мы пытаемся ограничить оставление многих требуемых артефактов в производственном коде. Производительность очень важна и не должна быть (или очень минимальной) деградации после редизайна. Код - OO в C++.
Я ищу некоторые идеи, какой подход принять. Любые предложения о том, как это сделать эффективно?
Для рекомендаций по рефакторингу интерфейс одного класса не очень полезен. Нам бы скорее нужна какая-то «легкая» диаграмма uml. Для правильного рефакторинга это поток информации, который нам нужен. –
Только один класс интерфейса и его статические методы используются в компоненте A для правильных вызовов в компонент B. Оба компонента - это не только 2 класса, но и библиотеки. Поток информации - метод из компонента A, использующий статический метод из класса интерфейса, вызывает метод в B. В B выполняются некоторые вычисления, один или несколько входных параметров заполняются, и соответствующий код возврата возвращается обратно вызывающая функция в A. Я надеюсь, что это объясняет лучший поток (у меня нет готового uml). – ratkok