У меня есть некоторые функции отладки, которые я хотел бы реорганизовать, но, поскольку они являются функциями отладки, кажется, что они с меньшей вероятностью будут следовать правильному дизайну. Они в значительной степени достигают глубины приложения, чтобы связываться с вещами.
Основная форма моего приложения имеет меню, содержащее функции отладки, и я ловлю события в коде формы. В настоящее время методы запрашивают конкретный объект в приложении, если он не нулевой, а затем связываются с ним. Я пытаюсь провести рефакторинг, чтобы я мог удалить ссылку на этот объект везде и использовать вместо него интерфейс (интерфейс используется многими другими объектами, которые не имеют отношения к функциям отладки.)
В качестве упрощенного примера представьте, что у меня есть этот логический код:
public class Logic
{
public SpecificState SpecificState { get; private set; }
public IGenericState GenericState { get; private set; }
}
И этот код формы:
private void DebugMethod_Click(object sender, EventArgs e)
{
if (myLogic.SpecificState != null)
{
myLogic.SpecificState.MessWithStuff();
}
}
Итак, я пытаюсь избавиться от ссылки SpecificState
. Он был удален из любого другого места в приложении, но я не могу придумать, как переписать функции отладки. Должны ли они перенести свою реализацию в класс Logic
? Если так, то что тогда? Было бы полной тратой помещать множество MessWithStuff
методов в IGenericState
, так как все другие классы имели бы пустые реализации.
редактировать
В течение жизни приложения многие IGenericState
экземпляров приходят и уходят. Это DFA / шаблон стратегии. Но только одна реализация имеет функции отладки.
В сторону: Есть ли еще термин для «отладки» в этом контексте, относящийся к функциям только для тестирования? «Отладка» обычно относится только к процессу исправления ошибок, поэтому поиск такого материала затруднен.