SOLID и пользовательский интерфейс? - PullRequest
5 голосов
/ 14 февраля 2009

Я стараюсь следовать принципам SOLID . Но каждый раз, когда речь заходит о пользовательских интерфейсах, я обнаруживаю, что между неуклюжим скрином гибридных агрегированных данных, которые требуются заказчику, и хорошими принципами единой ответственности есть внутреннее трение.

Теперь можно разделить и покорить различные части типичного пользовательского интерфейса на классы с одной ответственностью, но затем вы столкнетесь со всевозможными интересными конструктивными проблемами, потому что так называемые " отдельные "части графического интерфейса пользователя на самом деле часто оказываются разными представлениями одного и того же общего состояния или, по крайней мере, частичными представлениями перекрывающегося состояния.

Я часто заканчиваю тем, что собираю довольно неуклюжие классы контроллеров для своих представлений, которые не очень похожи на SOLID, но это довольно противоречивая практика кодирования, и это немного беспокоит меня. Кажется, что сложность его разделения не стоит того.

Так как вы справляетесь с этим?

Ответы [ 2 ]

3 голосов
/ 14 февраля 2009

Вы изучили шаблоны представления (незавершенные работы Мартина Фаулера)? Я склонен использовать Модель представления для сложных представлений и Автономное представление для тривиальных представлений. Модель презентации предоставляет вам гибкую настройку, и вы можете легко протестировать эти классы.

1 голос
/ 14 февраля 2009

Я думаю, вы в значительной степени правы. Представление данных, возможно, должно быть «неуклюжим скрином гибридных агрегированных данных», если это то, что пользовательский интерфейс диктует для вашего приложения. Для пользовательского интерфейса удобство использования пользовательского интерфейса важнее, чем попытка придерживаться принципов разработки кода. Принципы разработки кода не должны определять внешний вид или работу пользовательского интерфейса. Тогда вы просто получите жесткие формы и представления, которые имеют смысл для кода. Делайте то, что имеет смысл для пользователя.

То, что шаблон MVC / MVP, как упомянуто выше, может помочь. Отдельный вид от докладчика. Таким образом, вы все еще можете изолировать свой вид и сохранить SRP для вида. Ваш докладчик должен нарушать SRP и иметь несколько причин для изменения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...