Исходя из MVP (я считаю, что это более подходит для WinForms), ответ на ваш вопрос является дискуссионным. Однако ключом к моему пониманию было то, что в любое время вы сможете изменить свое мнение. То есть я должен иметь возможность предоставить новое представление WinForms для отображения вашего приложения или подключить его к интерфейсу ASP.NET MVC.
Как только вы осознаете это, проверка становится явной. Само приложение (бизнес-логика) должно генерировать исключения, обрабатывать ошибки и так далее. Логика интерфейса должна быть тупой. Другими словами, для представления WinForms вы должны убедиться, что поле не пустое и т. Д. Многие свойства для элементов управления позволяют это - панель свойств Visual Studio. Проверка правильности написания кода в графическом интерфейсе для тех, кто выбрасывает исключения, является большой нет, нет. Если бы у вас была проверка как для вида, так и для модели, вы бы дублировали код - все, что вам нужно, - это простая проверка, такая как, например, не пустые элементы управления. Пусть фактическое приложение само выполняет фактическую проверку.
Представьте себе, если бы я переключил ваш взгляд на интерфейс ASP.NET MVC. Я бы не сказал, что элементы управления, и, следовательно, потребуется некоторая форма сценариев на стороне клиента. Я хочу сказать, что единственный код, который вам нужно написать, - это представления, то есть не пытайтесь обобщать валидацию пользовательского интерфейса между представлениями, так как это противоречит цели разделения ваших интересов.
В вашем основном приложении должна быть вся логика. Специальная логика представления (свойства WinForms, Javascript и т. Д.) Должна быть уникальной для каждого представления. На мой взгляд, иметь свойства и интерфейсы, которые должны проверять каждое представление, неправильно.