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

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

9 Ответы

0 голосов
от
Я интересно, если это хорошая идея, чтобы сделать проверки в геттеров и сеттеров, или в другом месте в коде. Это может удивить вас, когда дело доходит до оптимизации и ускорения кода, я думаю, что вы не должны делать проверки в геттеры и сеттеры, но в коде, где вы обновляете свои файлы или базы данных. Я ошибаюсь?
0 голосов
от
Ну, один из reaons, почему классы обычно содержат закрытые члены Общественного геттеры/сеттеры-это точно, потому что они могут проверить данные. Если у вас есть количество, Чем может быть между 1 и 100, я бы наверняка что-то положить в установщик, который проверяет, а потом может бросить исключение, которое быть пойманным код. Причина проста: если вы не сделаете это в сеттер, вы должны помнить, что 1 к 100 ограничение каждый раз, когда вы установите его, что приводит к дублировать код или, когда вы его забудете, это приводит к недопустимом состоянии. Что касается производительности, я с кнутом здесь: "Мы не должны забывать о небольшой эффективности, скажем, около 97% времени: преждевременная оптимизация-это корень всех зол".
0 голосов
от
@Черепаха, заново: Если у вас есть куча [простой публичных установить/получить] свойств ... они может также быть поля Свойства имеют и другие преимущества над полями. Они более явный контракт, они сериализуются, то они могут быть отлажены позже, они хорошее место для расширения по наследству. Более неуклюжую синтаксис-это случайное сложности -- .net 3.5, для примера преодолевает это. Общий (и порочная) практика-начать с общественного поля, и превратить их потом в свойства, на основе 'по мере необходимости'. Это нарушает ваш договор с теми, кто потребляет ваш класс, так что лучше начать с свойства.
0 голосов
от
Это зависит от того. Как правило, код должен быстро упасть. Если значение может быть установлено несколько точек в коде и проверки только после получения значения, ошибка представляется в код, который выполняет обновление. Если сеттеры проверять входные данные, вы знаете, что код пытается установить недопустимые значения.
0 голосов
от
С точки зрения наиболее поддерживаемого кода, я думаю, вы должны сделать столько проверки, сколько вы можете в сеттер свойства. Таким образом, вы не будете кэширование или иначе имеем дело с неправильными данными. В конце концов, это свойства, которые предназначены для. Если у вас есть куча свойств, как...
public string Name
{
    get
    {
        return _name;
    }
    set
    {
        _name = value;
    }
}
... они могут быть поля
0 голосов
от
Возможно, вы захотите проверить домен управляемая конструкция, Эрик Эванс. ДДД это понятие спецификация: ... явное сказуемое-как ценность Объекты для специальных целей. А Спецификация-это предикат, который определяет, является ли объект или нет не удовлетворять некоторым критериям. Я думаю, что не быстро-это одно, другое-где держать логику для проверки. Домен является правильным местом, чтобы сохранить логику и я думаю, что объект спецификации или метод validate на объекты домена будет хорошим местом.
0 голосов
от
Проверки должны быть отражены отдельно от геттеров или сеттеров в методе проверки. Таким образом, если проверка должна быть повторно использованы между несколькими компонентами, это доступно. Когда сеттер называется, такая услуга проверки следует использовать для того чтобы санировать ввод в объект. Таким образом, вы знаете всю информацию, которая хранится в объекте действует во все времена. Вам не нужно никаких проверок на геттер, потому что информации об этом объекте уже доверяют, чтобы быть действительным. Не сохранить ваши проверки до обновления базы данных!! Лучше не быстро.
0 голосов
от
Я бы реализовать IDataErrorInfo и положил мою логику проверки в своем заблуждении и это[имя_столбца] свойства. Таким образом, если вы хотите проверить программно, есть ли ошибка, которую вы можете просто проверить какой-либо из этих свойств в коде, или вы можете передать на проверку в привязку данных в веб-формы, окна формы или WPF. "ValidatesOnDataError в WPF это" обязательное свойство делает это особенно легко.
0 голосов
от
Я стараюсь никогда не позволяйте мои объекты введите недопустимом состоянии, так сеттеров наверняка бы проверка, а также любые методы, которые изменяют состояние. Таким образом, я никогда не придется беспокоиться о том, что объект я имею дело С является недействительным. Если вы держите свои методы, как проверка границ, то вам никогда не придется беспокоиться о рамках проверки и IsValid() метод вызывает сыпали повсюду.
...