Хотя я никогда ничего не делал с помощью Smalltalk, мое недолгое времяпровождение с ним определенно оставило свой след. Единственный способ описать опыт - это MVC, каким он должен был быть. По сути, вся тяжелая работа для вашего приложения выполняется в бизнес-объектах (или доменной модели, если вы склонны к этому). Стандартные элементы управления каким-либо образом связаны с бизнес-объектами. Например, текстовое поле сопоставляется с полем объекта (само поле является объектом, так что это легко сделать). Кнопка будет привязана к методу. Все это делается с помощью очень простого и естественного API. Нам не нужно думать о связывании объектов и т. Д. Это просто работает.
Тем не менее, во многих более новых языках и API вы вынуждены мыслить извне. Сначала с C ++ и MFC, а теперь с C # и WPF, Microsoft получила свой мир разработчиков, подключенный к сборщикам GUI, где вы создаете свое приложение, реализуя обработчики событий , Разработка Java Swing не так уж отличается, только вы пишете код, чтобы сами создавать экземпляры элементов управления в форме. Для некоторых проектов модель доменного имени может даже никогда не существовать - только обработчики событий. Я был в и вокруг этой модели для большей части моей карьеры.
Каждый способ заставляет вас думать по-другому. С подходом Smalltalk ваш домен умный, а графический интерфейс тупой. При использовании подхода VisualStudio по умолчанию ваш графический интерфейс интеллектуален, а модель вашего домена (если она существует) довольно анемична.
Многие разработчики, с которыми я работаю, видят ценность в подходе Smalltalk и пытаются внедрить этот подход в среду VisualStudio. WPF имеет некоторые функции динамического связывания, которые делают это возможным; но есть ограничения. Неизбежно, некоторый код, который принадлежит модели предметной области, заканчивается в классах GUI.
Итак, каким образом вы разрабатываете / разрабатываете свой код? Почему?
- GUI первый. Взаимодействие с пользователем имеет первостепенное значение.
- Домен первый. Мне нужно убедиться в правильности системы, прежде чем мы добавим на нее пользовательский интерфейс.
Есть плюсы и минусы для любого подхода. Доменная модель вписывается туда с хрустальными соборами и пирогом в небе. GUI подходит там быстро и грязно (иногда очень грязно).
И для дополнительного бонуса: как вы убедитесь, что код поддерживается?