В предыдущих постах знакомство с шаблоном MVP-VM, проводилось на наиболее подходящей для этого технологии Windows forms. Я неслучайно стал использовать эту технологию в качестве демонстрационной площадки, т.к. самые вопиющие нарушения принципа разделения ответственностей (Separation of Concerns) я наблюдал в проектах, использующих в качестве UI, Windows forms и ASP.NET Web forms. Дизайн таких проектов представляет кашу кода из доменной, инфраструктурной, презентационной логики в code behind’е форм, aka Smart UI. И все бы ничего до поры до времени, пока в результате экспоненциального роста сложности не начинают расти бюджеты ресурсов (деньги, люди) на поддержку проекта в ущерб развитию.
Описанные проблемы являются следствием пренебрежительного отношения к законам разработки программного обеспечения. В условиях постоянно расширяющегося проекта должны быть четко заданы параметры качества, в частности дизайна: концептуальная целостность, удобство и простота обслуживания, возможность повторного использования и пр., которые определят перечень законов разработки необходимых для удержания заданных границ качества. Но зачастую параметры качества дизайна никак формализованы, по принципу «ну это и так всем понятно!». А поскольку нет критериев качества, то нет и законов их соблюдения, нет проработки дизайна. И, первый закон, которого нет - принцип единственной обязанности SRP (Single Responsibility Principle), базовой целью которого является борьба со сложностью.
Следуя цели упрощения, для организации уровня представления, необходимо применять структурно-проектировочные шаблоны, такие как MVC и MVP, в которых ответственность за обработку задач UI разбивается на три роли: модель, представление, контроллер/презентер.
В данном посте я хочу обобщить описанные ранее практики разграничения ответственностей уровня представления на простом примере - фронта’ web приложения по схеме шаблона MVP.
Описанные проблемы являются следствием пренебрежительного отношения к законам разработки программного обеспечения. В условиях постоянно расширяющегося проекта должны быть четко заданы параметры качества, в частности дизайна: концептуальная целостность, удобство и простота обслуживания, возможность повторного использования и пр., которые определят перечень законов разработки необходимых для удержания заданных границ качества. Но зачастую параметры качества дизайна никак формализованы, по принципу «ну это и так всем понятно!». А поскольку нет критериев качества, то нет и законов их соблюдения, нет проработки дизайна. И, первый закон, которого нет - принцип единственной обязанности SRP (Single Responsibility Principle), базовой целью которого является борьба со сложностью.
Следуя цели упрощения, для организации уровня представления, необходимо применять структурно-проектировочные шаблоны, такие как MVC и MVP, в которых ответственность за обработку задач UI разбивается на три роли: модель, представление, контроллер/презентер.
В данном посте я хочу обобщить описанные ранее практики разграничения ответственностей уровня представления на простом примере - фронта’ web приложения по схеме шаблона MVP.