Ну, на ваш выбор влияет технология, которую вы используете.Некоторые технологии делают определенный шаблон естественным для выполнения, и поэтому, если вы (и каждый разработчик) не будете явно проектировать и заботиться об этом, вы получите то, что кажется наиболее естественным.На WinForms наиболее естественным является шаблон MVP.У вас есть представление о том, что вы можете создать макет в конструкторе, а файл с выделенным кодом становится презентатором, по сути, объединяя представление и презентатор в одном классе (в любом случае это соотношение 1: 1).С другой стороны, для веб-приложений MVC является естественной схемой, поскольку ваш веб-сервер уже выступает в качестве контроллера.Наконец, MVVM очень хорошо поддерживается в WPF, хотя вы также можете пойти туда и к MVP, если начнете много использовать код, стоящий за файлом.Но вместо этого использование DataBinding может заставить вас забыть использовать код, стоящий за файлом.Хорошая статья, которую я прочитал об этом, здесь .Конечно, вы можете реализовать MVVM с WinForms, прочитайте эту ссылку для хорошего примера.
С точки зрения тестируемости MVVM воспринимается как лучший шаблон со времени вашей модели представления (и, следовательно, поведенияс вашей точки зрения) можно протестировать без реального графического интерфейса.MVP, однако, легко понять и реализовать, он не требует сложных привязок и дает вам максимальный контроль над происходящим (например, подавление событий).