15 ноября 2011

MVC или не MVC...


Часто задавался вопросом и сталкивался в разных форумах с обсуждением целесообразности MVC.

И вот однажды один очень мудрый флешер мне сказал, что если ты не работал в команде в которой используют MVC, то нечего тебе туда лезть. Это действительно так, но я бы еще добавил и тот момент, что не все команды которые используются MVC делают это правильно. Часто я сталкивался с командами которые все делали ради программирования, и MVC применяли там где это не совсем уместно.

На мой взгляд, достаточно просто следить за кодом, если количество строк в классе превышает 200 - 300 единиц, то стоит задуматься и разнести код в подклассы или вообще от него избавиться, так как он дублируется.

Участки кода более чем из 2 - 3 строк, повторяющиеся многократно необходимо выносить в методы или свойства.

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

5 комментариев:

  1. Я так полагаю: размер кода говорит лишь о необходимости рефакторинга, но не об определённом паттерне. MVC я применяю так: если одну модель будут использовать несколько видов, выделяю её, а контроллеры оставляю внутри видов. А если связка модель-вид может обрабатываться разными контроллерами – тогда разбираю на полноценный MVC.

    ОтветитьУдалить
  2. Хорошо, а если у тебя проект разбит не на классы в структуре MVC, а на отдельные маленькие модули, который грузятся, допустим Main - ном. А модули малы и нет необходимости городить огород.
    Тем более, что модули гораздо легче менять, перетосовать или вообще удалить?

    ОтветитьУдалить
  3. Зависит от проекта. MVC подходит для создания GUI, для других задач могут понадобиться свои паттерны. Возможно, даже без ООП. Вот, например «Entity – Component – Assemblage»:
    http://t-machine.org/index.php/2009/10/26/entity-systems-are-the-future-of-mmos-part-5/

    ОтветитьУдалить
  4. Вот я поэтому и говорю что свет клином не сошелся только на MVC, все зависит от задачи и от предпочтения программиста)))

    ОтветитьУдалить
  5. так я и соглашаюсь)

    ОтветитьУдалить

Поделиться своими мыслями...