Установка значения по умолчанию - логика представления или бизнес-логика? - PullRequest
7 голосов
/ 18 июня 2010

Мне было интересно, если установка значения по умолчанию для SelectList считается логикой представления или бизнес-логикой?Например, если требование состоит в том, что Сотрудник не может быть сохранен без Местоположения, но 99% времени местоположение, которое будет выбрано, является конкретным элементом, скажем, Атланта.Из-за этого для списка SelectList местоположения по умолчанию следует использовать Атланту, когда отображается экран ввода для нового сотрудника.Должен ли я использовать местоположение по умолчанию в модели или в модели представления?Одна вещь, которую я понял, заключается в том, что модульные тесты становятся неуклюжими, потому что в обоих случаях я буду вынужден проводить тестирование на месте, которое всегда будет присутствовать в производстве, но я не могу создать модульный тест с моими собственными тестовыми данными, если только «Атланта»в наборе мест, используемых в тесте.Буду признателен, если у вас есть какие-либо мысли по этому поводу.

Ответы [ 4 ]

4 голосов
/ 18 июня 2010

Как и для многих таких вопросов (субъективных), ответ таков: «Это зависит».

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

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

3 голосов
/ 18 июня 2010

Из-за этого для списка местоположений SelectList должен быть установлен по умолчанию значение Location5, когда отображается экран ввода для нового сотрудника. Должен ли я использовать местоположение по умолчанию в модели или в модели представления?

Это бизнес-логика в вашем примере, но это не помешает вам съесть свой торт и съесть его тоже в этом случае. Модель может указывать значение по умолчанию; представление затем инициализирует себя этим значением по умолчанию.

В целом, является ли что-то «бизнес-логикой» или «логикой представления», зависит от того, относится ли это к области или нет. Например, установка самого раннего года в раскрывающемся списке дат, скажем, до 1900 года, вероятно, является проблемой презентации. Но это также может быть проблемой для бизнеса, если система не предназначена для приема дат ранее 1900 года.

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

С помощью стратегии, о которой я упоминал выше, юнит-тестирование очень просто. Просто убедитесь, что:

  • модель предоставляет значение по умолчанию
  • представление принимает это значение по умолчанию
  • представление инициализируется этим значением по умолчанию
  • представление имеет соответствующее поведение независимо от того, предоставляет ли модель это значение
0 голосов
/ 18 июня 2010

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

0 голосов
/ 18 июня 2010

Я бы подумал, что значения по умолчанию - это бизнес-логика.

Например, если компания перемещает местоположение по умолчанию, это уже не "Альтанта" или "Лондон", а "Нью-Йорк" или "Ноттингем".

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