Главные принципы MVC и смысл использования в разработке программных продуктов

Автор: Бахтин И.В.

Журнал: Форум молодых ученых @forum-nauka

Статья в выпуске: 1 (41), 2020 года.

Бесплатный доступ

В статье рассмотрены основные принципы паттерна MVC, описано предназначение модели, вида и контроллера. Приведены преимущества, которые получает разработчик программного продукта, используя концепция MVC. Объяснено, почему разработчики не всегда следуют данной концепции.

Информационная система, модель-вид-контроллер

Короткий адрес: https://sciup.org/140287220

IDR: 140287220

Текст научной статьи Главные принципы MVC и смысл использования в разработке программных продуктов

Концепция MVC (Model-View-Controller) заключается в разделении приложения на три основных компонента, которые связаны между собой, но могут разрабатываться независимо друг от друга. Об MVC официально заявили в 1988 году, однако сама идея и первые ее реализации появились несколькими годами раньше.

Идея и преимущество MVC

Основной смысл концепции в том, что компоненты должны быть максимально независимы, за счет чего уменьшается количество ошибок при разработке, а также снижаются трудозатраты, потому что повторное использование кода значительно упрощается. Главные принципы MVC [1] :

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

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

  • -    Вид. Отвечает за отображение данных, получаемых из модели. Одни и те же данные могут иметь разные представления, например статистические значения могут визуализироваться как графики или диаграммы, а могут иметь и табличное представление. Но во всех случаях вид получает один и тот же массив данных из метода модели.

  • -    Контроллер. Это связующее звено между моделью и видом. Он принимает решение, в зависимости от действий пользователя, какими методами модели обрабатывать запрос и как отображать ответ, то есть какой вид использовать. В контексте веб-программирования контроллер получает от пользователя переменные GET, POST, COOKIE и др. и выстраивает логику работы приложения.

Такое разделение дает разработчику ряд преимуществ:

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

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

  • -    MVC поспособствовала развитию фреймворков (архитектурных каркасов), а те, в свою очередь, благоприятно повлияли на укрепление концепции. Теперь разработчики могут использовать готовые архитектуры, имеющие в своем составе множество дополнительных библиотек, с помощью которых можно элегантно решить почти любую задачу.

Какой смысл в MVC, если теория не соблюдается?

Однако практика использования этих фреймворков, а также сама их реализация иногда идут вразрез с главной идеей MVC.

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

С другой — производители некоторых фреймворков сами создают условия для нарушения правил тем, что не ставят жестких рамок. Они понимают, что такие рамки уменьшают гибкость конечного продукта и могут плохо сказаться на его популярности и развитии. Поэтому базовая идея MVC в некоторой степени приносится в жертву.

А если так, то есть ли смысл накладывать на разработку какие -то правила, но потом нарушать их? Не стоит лишний раз повторять, что универсального способа разработки ПО нет и быть не может.

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

В общем смысле программирование — это преобразование и упорядочивание данных. Систематизация — единственный способ справиться с этой задачей. Чем понятнее структура приложения, тем легче его контролировать. Минимализм — вот к чему нужно стремиться. Для многих задач MVC не подойдет просто потому, что эти задачи слишком просты.

Список литературы Главные принципы MVC и смысл использования в разработке программных продуктов

  • MVC для веб: проще некуда - habr [Электронный ресурс].- Режим доступа: https://habr.com/ru/post/181772/ (дата обращения: 30.12.2019)
  • Паттерны для новичков: MVC vs MVP vs MVVM - habr [Электронный ресурс].- Режим доступа: https://habr.com/ru/post/215605/ (дата обращения: 30.12.2019)
  • Что такое MVC: рассказываем простыми словами - habr [Электронный ресурс].- Режим доступа: https://ru.hexlet.io/blog/posts/chto-takoe-mvc-rasskazyvaem-prostymi-slovami/ (дата обращения: 30.12.2019)
Статья научная