На днях поспорил с коллегой насчет концепции MVC.
Я отстаиваю позицию, что лишний оверхед никогда не решает проблему, даже если способствует абстрактной идеологической чистоте. Поэтому вполне допустимо, что объекты модели (представляющие, например, полученные из RDBMS данные) могут иметь методы, возвращающие человековоспринимаемые значения своих свойств, а View может принимать эти объекты на входе и использовать их геттеры для вставки в шаблоны выводимых документов или интерфейса.
Коллега же — сторонник идеи о loose coupling, что заключается для него в том, что View вообще должен получать независимый от источника набор структурированных данных, желательно в XML, которые форматировать по разумению. Подготавливать эти данные должна либо модель, либо контроллер.
Я не согласен с этим подходом потому, что, по моему мнению, 1) ни контроллер, ни модель не должны делать не свою работу (тот XML — это тоже view как-бы), 2) это усложняет разработку, вместо всяко ее упрощать, в коде появляется много лишних букв и поводов совершить ошибку, 3) XML — формат обмена между вообще независимыми черными ящиками, и пользовать его внутренне в рамках одной программы — оверкилл.
Коллега не согласен с моим подходом, так как полагает, что доступ слоя View к объектам модели некошерен по сути и нарушает сам принцип разделения.
Кто же из нас неправ, all?