Насколько полезна «чистая» реализация MVC? - PullRequest
5 голосов
/ 19 марта 2010

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

Существует предположение, что причина, по которой это занимает много времени, заключается в объеме бизнес-логики, присутствующей в слое 'view'. В какой-то степени я могу ручаться за то, что это правда, но симптомы не всегда достоверно указывают на причину. Было высказано предположение, что если мы просто переместим бизнес-логику на уровень контроллера и используем чистое представление (мы используем java J2EE и Struts), как при реализации тегов Struts вместо вызова bean-слоя и итерации объектов прямо на jsp - и т. Д.

Прежде чем я начал выступать за то, чтобы мы пошли дальше, я хотел понять, что думают другие люди. Обеспечивает ли «чистая» реализация MVC (особенно упор на разделение контроллера и представления) более понятной, простой в разработке и изменении кодовой базы?

Спасибо всем за вклад - это очень помогло

Ответы [ 5 ]

10 голосов
/ 19 марта 2010

Ваша цель должна состоять в том, чтобы собрать бизнес-логику в одном месте. По моему опыту, если вы сможете это сделать, вашу базу кода будет легче разрабатывать, поддерживать и изменять.

Model-view-controller - это способ добраться до этой точки, хотя в классическом MVC логика business находится в (доменной) модели, а логика приложения в контроллере.

Логика приложения : если следующая контрольная дата пользователя находится в пределах недели (или просрочена), отобразите экран «график проверки», в противном случае откройте экран «история проверок».

Бизнес-логика : рестораны, которые ранее не прошли проверку, должны проверяться каждые шесть месяцев, рестораны морепродуктов должны проверяться каждый год, а все остальные рестораны - каждые два года. Учитывая последний осмотр этого ресторана, когда должен быть их следующий осмотр?

3 голосов
/ 19 марта 2010

Разделение всегда делает это. Неважно, MVC или нет, чем меньше связи в системе, тем легче ее поддерживать и изменять. MVC - просто хороший шаблон для Web, который упрощает разделение, вот и все.

2 голосов
/ 19 марта 2010

MVC предполагает, что интеллект должен быть должным образом отделен. Это означает, что вид и модель были бы глупыми, а контроллер - настоящим умным парнем. Это подразумевает, что мы можем плавно создавать модифицированных глупых парней и умных парней. Эти преимущества получают огромную выгоду, когда требования / исправления кода эффективно выполняются. Добавленные абстракции - это боль, пока не поймешь используемые шаблоны. Это MVC на стороне сервера. А как насчет MVC на коде конца клиента?

Иногда очень верно, что в модели представлений встроен другой интеллект, и они закодированы в бизнес-делегатах. Однако лучше подходить к использованию пользовательских тегов. Самая раздражающая вещь о jsp-страницах для меня возникает, когда они смешивают javascript с кодом. Этот умный код на самом деле пытается манипулировать DOM и приводит к несогласованным тегам в статическом jsp-коде.

Как у вас есть роскошь, чтобы начать с нуля. Жизнь была бы проще, если бы все использовали ненавязчивый javascript (язык, отличный от java и более простой, чем дерьмо, которое я видел в рабочем коде) и пользовательские теги (не так уж сложно). Еще одна болевая точка - отсутствие совместимого с W3C html / css. Огромное избавление от проблем с браузером, если вы, кто они есть.

P.S: Извинения за длинную напыщенную речь:)

1 голос
/ 19 марта 2010

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

1 голос
/ 19 марта 2010

Кто-то сказал это:

«Любая проблема в информатике может быть решена с помощью другого слоя косвенности»

Но я не помню, кто является автором этой цитаты. Кто-нибудь знает?

...