Допустим необходимо реализовать следующую фичу. У меня есть GUI приложение со своей бизнес логикой. Модель довольно нетривиальная, и я хочу внедрить так называемый дебагинг. Другими словами, я хочу отслеживать изменение модели пошагово (например по нажатию клавиши F10). Хотел бы спросить, какое самое адекватное решение данной проблемы существует? На данный момент вижу два потенциальных решения:
Не хочется городить велосипед, может уже существуют зарекомендовавшие себя подходы?
Мне кажется, устоявшийся подход — отлаживать программу по частям.
Когда вы тестируете вашу модель, вам всё равно, есть ли у вас UI. Вы просто подаёте на вход значения, запускаете модель, и убеждаетесь, что она выдаёт нужный результат. (Возможно, это стоит автоматизировать в виде юнит-тестов.) И вы можете вполне смотреть значение ваших переменных в отладчике, UI вам для этого не нужен.
Когда вы тестируете бизнес-логику/VM, в простых случаях вы тоже можете просто пройти нужные куски под отладчиком, вам не нужно для этого UI. В сложных случаях (например, много асинхронные событий, на которые отладчик влияет не лучшим образом) заведите адекватный логгинг.
Для тестирования UI, проще всего разбить сложный UI на отдельные контролы (UserControl, DataTemplate и т. п.), и тестировать их по отдельности на тестовом приложении.
Если вы замечаете, что у вас для отладки бизнес-логики нужно дождаться реакции UI, у вас что-то неправильно в архитектуре: ваша бизнес-логика частично находится в UI-уровне! (Пример: у вас связаны две VM через Binding в UI. Это плохо и неправильно.) Убедитесь, что бизнес-логика бежит нужным образом и в отсутствие UI. Это ликвидирует проблемы с отладкой, и улучшит модульность вашего приложения.
Продвижение своими сайтами как стратегия роста и независимости