Представление MVC старым C ++ спагетти-кодерам? - PullRequest
7 голосов
/ 25 марта 2010

Я хочу представить идею MVC кучке старых программистов C ++ для спагетти (в моем местном компьютерном клубе).

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

Я надеялся, что смогу также указать ему правильное направление, показав ему Model View Controller, но мне нужно сделать это так, чтобы он имел для него смысл, а также, вероятно, его нужно написать в C / C ++!

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

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

Ответы [ 3 ]

9 голосов
/ 25 марта 2010

Не начинайте с MVC.Начните с публикации / подписки (AKA - шаблон «слушателя»).

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

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

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

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

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

Как только вы это сделаете, у вас будет довольнохорошее введение в MVC.

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

Возможно, вам будет проще продавать их по шаблонам Документ / Просмотр или Документ / Презентатор. MVC был изобретен на Smalltalk, где все о различных элементах пользовательского интерфейса должно было быть закодировано разработчиком (как я понимаю, никогда не использовал это). Таким образом, элемент контроллера был необходим, потому что не было таких вещей, как TextElement :: OnChange. В наши дни более современные GUI API используют Document / View, но Document / Presenter - это то, что я видел.

Вы также можете прочитать статью Роберта Мартина о среде TaskMaster.

Вы также можете подумать, что любой разработчик C ++, который не знаком с этими шаблонами и уже понимает их назначение и необходимость, является либо полным новичком, либо корзинкой, которую лучше избегать. Такие люди приносят больше вреда, чем пользы, и, как правило, слишком высокомерны, чтобы узнавать что-то новое, или они уже получили бы.

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

Получите некоторый спагетти-код C ++ (их?), Реорганизуйте его для использования MVC и покажите им, какие у него есть преимущества, такие как более простое модульное тестирование, повторное использование моделей, внесение локализованных изменений в представление с меньшим беспокойством и т. Д.

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