Использование установщика объекта для запуска обновления данных, лучшие практики - PullRequest
0 голосов
/ 05 мая 2009

У меня есть объект, который создается в методе linq to sql. Когда поля объекта присваиваются, я хочу проверить поле даты и, если это старая дата, извлечь данные из другой таблицы и выполнить вычисления, прежде чем продолжить назначение этого объекта.
Что-то не так с инициированием такого события через установщик свойств? Или я должен независимо проверить дату через какой-либо сервис и внести изменения в случае необходимости в какой-то момент назад?

Ответы [ 2 ]

1 голос
/ 05 мая 2009

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

Подобные вещи могут вызывать проблемы, если у вас есть средства доступа, которые используют средства доступа, которые используют средства доступа; Вы можете быстро вызвать непредвиденные проблемы с производительностью. Как правило, это хорошая идея - сохранять действия сеттеров (или геттеров) относительно небольшим набором действий. Например, проверка может отлично работать в установщике, но я бы вообще не советовал проверять внешние ресурсы по двум причинам: во-первых, задержки ресурсов могут вызвать проблемы с ожидаемой скоростью доступа, а во-вторых, с количеством внешних ресурсов. доступ может разрушить вашу производительность.

Как правило, правило таково: будьте проще. Делать сложные вещи в сеттере не является неразумным, но если вы это делаете, очень важно понимать последствия всех действий, которые вы будете вызывать, и ЧРЕЗВЫЧАЙНО важно документировать, что он делает очень хорошо, поэтому следующий (или девушка) использовать код не просто пытается наивно использовать аксессор и в конечном итоге неожиданно вызывает массовые конфликты ресурсов.

0 голосов
/ 05 мая 2009

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

Ключевое слово: связано. Если вы просто используете сеттер как «удобное» время для выполнения каких-то других вещей, потому что это работает, вы делаете это неправильно. Если установка этого значения требует выполнения другой работы, то непременно используйте для этого установщик.

...