Обновить команду -Архитектура Вопрос - PullRequest
0 голосов
/ 14 октября 2009

сценарий:

необходимо обновить 2 поля клиента

у вас еще нет метода UpdateCustomer где-либо в вашем проекте

Если вы создадите метод UpdateCustomer (Customer customer), который может принять полный объект customer и просто выполнить все обновления для всех полей

или

например (очевидно, это имя только для публикации здесь) создайте UpdateCustomer2Fields (строковый месяц, строковый год) и просто обновите эти 2 поля

Я мог бы представить себе дерьмо из UpdateCustomerThis UpdateCustomerThat

но если я просто предоставлю один UpdateCustomer, я могу передать ему объект customer, чтобы он обновил что-либо и использовал его где угодно.

Хорошо, плохо? куда идти.

Ответы [ 2 ]

1 голос
/ 14 октября 2009

Вы должны просто обновить все поля, если нет причин не делать этого, чтобы уменьшить ваши проблемы с обслуживанием.

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

  1. Подавляющее большинство ваших транзакций являются обновлениями, что приводит к большой нагрузке из-за ненужных данных, передаваемых по сети.
  2. Соответствие бизнесу или законодательству требует, чтобы вы регистрировали, какие именно пользователи меняли какие именно данные при каждой транзакции (они существуют). Однако в зависимости от среды лучше всего зарегистрировать это на сервере базы данных.
  3. У некоторых пользователей не должно быть доступа к некоторым полям для обновления. Это зависит от архитектуры и относится к тому, как вы представляете свои функции. Если кто-то должен иметь определенные учетные данные для обновления конкретной информации, то обычно вам не нужно, чтобы каждая транзакция обновляла все. Это может быть динамическим, и может привести к передаче словаря полей для обновления (или множества других вариантов). Я обычно сталкиваюсь с этим с многоуровневыми архитектурами, использующими сервисы с несколькими потребителями, которые имеют разные права доступа.
  4. Я что-нибудь пропустил?

Как правило, ответ - просто передать весь объект.

0 голосов
/ 14 октября 2009

Создайте метод с именем UpdateCustomer (Customer customer), который может принимать полный объект customer и просто обновлять все поля.

Будьте проще. Теперь вы можете тратить время на более серьезные проблемы.

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