Разработка многоуровневого приложения.В каком направлении?

StackOverflow https://stackoverflow.com/questions/134094

  •  02-07-2019
  •  | 
  •  

Вопрос

Предполагая, что вы реализуете историю пользователя, которая требует изменений на всех уровнях от пользовательского интерфейса (или фасада сервиса) до базы данных.

В каком направлении вы двигаетесь?

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

Решение

Лучший ответ, который я видел на подобные вопросы, был дан ребятами из Atomic Object и их Ведущий Первый закономерность.По сути, это реализация шаблона MVP, в котором (как следует из названия) вы начинаете работать с презентатора.

Это предоставляет вам очень легкий объект (поскольку presenter в основном предназначен для маршалирования данных из модели в представление и событий из представления в модель), который может непосредственно моделировать ваш набор действий пользователя.При работе с презентером представление и Модель обычно определяются как интерфейсы и издеваются, поэтому ваше первоначальное внимание сосредоточено на определении того, как пользователь взаимодействует с вашими объектами.

Обычно мне нравится работать таким образом, даже если я не использую строгий шаблон MVP.Я обнаружил, что сосредоточение внимания на взаимодействии с пользователем помогает мне создавать бизнес-объекты, с которыми легче взаимодействовать.Мы также используем Физическая форма занимаюсь интеграционным тестированием, и я нахожу, что написание приспособлений для Fitnesse при создании моих бизнес-объектов помогает сфокусироваться на восприятии истории пользователем.

Однако я должен сказать, что в итоге получается довольно интересный цикл TDD, когда вы начинаете с неудачного теста пригодности, затем создаете неудачный модульный тест для этой функциональности и прокладываете себе путь обратно по стеку.В некоторых случаях я также пишу модульные тесты базы данных, поэтому есть еще один уровень тестов, которые должны быть написаны, завершены с ошибкой и пройдены до прохождения тестов на пригодность.

Другие советы

Если возможны изменения, начните с передней части.Вы можете немедленно получить обратную связь от акционеров.Кто знает?Может быть, они на самом деле не знают, чего хотят.Наблюдайте, как они используют интерфейс (UI, сервис или что-то другое).Их действия могут вдохновить вас взглянуть на проблему в новом свете.Если вы можете отслеживать изменения до кодирования объектов домена и базы данных, вы экономите массу времени.

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

Ваше здоровье.

Я бы сделал это снизу вверх, так как вы быстро получите некоторые рабочие результаты (i.e.вы можете писать модульные тесты без пользовательского интерфейса, но не можете тестировать пользовательский интерфейс, пока модель не будет готова).

Однако есть и другие мнения.

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

Думая об этом, вам, вероятно, все равно нужно будет сделать некоторые обновления для всех слоев...=)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top