Архитектура MVP делает более чистый код, но более чистый код не является основной целью MVP; достижение слабой связи , более высокой когезии и тестируемости is.
Если слабосвязанные компоненты и логика, проверяемая модулем, не являются обязательными, то полномасштабный MVP действительно излишним, и показ модели в качестве свойств в представлении определенно достаточно хорош , так как это уже помогает сделать так, чтобы ваш «ведущий» не заботился о контроле формы. Вы рассматриваете форму как объект, о котором она просит, и, прагматично говоря, это вполне может быть всем, что вам нужно. Я бы сделал так, чтобы метод Show
возвращал явный Boolean
, поскольку он неявно используется как таковой.
С другой стороны, если вы снимаете для развязки и проверки, то извлечение модели из вида будет только первым шагом : тогда вам нужно отделить докладчика от лист, и, возможно, представит некоторый интерфейс ISettingsAdapter
, который абстрагирует его, так что если / когда конфигурация должна перейти в базу данных или в какой-либо файл .config, ваш код докладчика не должен изменяться каким-либо образом ... но это требует разработки интерфейсов без учета какой-либо конкретной конкретной реализации , то есть чего-то, что работает без изменений, независимо от того, находятся ли данные на рабочем листе, в каком-то плоском файле или в некоторой таблице базы данных.
MVP требует смены парадигмы: MVP больше не процедурное программирование, это ООП. То, является ли ООП избыточным для ваших нужд, зависит от того, насколько много связей вы готовы прожить, и насколько слабой эта связь делает ваш код перед лицом будущих изменений. Часто достаточно абстракции : использование именованных диапазонов вместо жестко закодированных адресов диапазонов является одним из способов повышения уровня абстракции; скрытие рабочего листа за интерфейсом адаптера, реализованным прокси-классом рабочего листа (что бы вы ни делали, никогда не заставляет модуль рабочего листа реализовывать интерфейс: он будет падать) - это другое - зависит от того, где ваш порог «перебор» есть, но если вы делаете достигаете полной развязки и пишете модульные тесты , никто не сможет обвинить вас в том, что вы перешли за борт: вы просто следуете передовым отраслевым практикам, которые Каждый программист стремится к тому, чтобы улучшить свои навыки и упростить последующее использование этого кода и его переписывание в .NET, будь то VB или C #. Я сомневаюсь, что кто-либо будет утверждать, что полномасштабный MVP является избыточным в .NET / WinForms.