powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Внутри класса лучше использовать что - свойства или поля?
5 сообщений из 5, страница 1 из 1
Внутри класса лучше использовать что - свойства или поля?
    #38543530
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Внутри класса - это в телах конструкторов, методов и т. п.

Вот в конструкторе я устанавливаю значения для объекта класса - лучше это делать через поля или через свойства?

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

С другой стороны, свойства были придуманы для того, чтобы ВНЕШНИЕ пользователи объекта не имели прямого доступа к реализации хранения данных в классе - т. е. для ВНУТРЕННИХ пользователей (конструкторов, методов и пр.) они как бы не нужны. Ну а валидацию можно в атрибутах делать, например.




Ну и как дополнительный вопрос - валидация в свойствах зло или нет?
...
Рейтинг: 0 / 0
Внутри класса лучше использовать что - свойства или поля?
    #38543576
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
class test {
    private string _txt;

    private bool DoCheckLength(string txt) {
        if (txt.Length > 10)
            throw new ApplicationException("Big size");
    }

    public test(string txt) {
        if (DoCheckLength(txt))
            _txt = txt;
    }

    public string Text { get {return _txt;} set { if (DoCheckLength(value) _txt = value;)}
}



Ну или вместо bool возвращать сразу строку, чтобы избежать if-ов
...
Рейтинг: 0 / 0
Внутри класса лучше использовать что - свойства или поля?
    #38543581
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320свойства были придуманы для того, чтобы ВНЕШНИЕ пользователи объекта не имели прямого доступа к реализации хранения данных в классе - т. е. для ВНУТРЕННИХ пользователей (конструкторов, методов и пр.) они как бы не нужны

1) Из первого вашего утверждения вовсе не следует второе.
2) В конструкторах виртуальные метода нежелательно использовать. А свойства теоретически при set могут их вызывать.
...
Рейтинг: 0 / 0
Внутри класса лучше использовать что - свойства или поля?
    #38543793
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79,

а если приделать атрибуты валидации к полям, а не к свойствам? Тогда можно валидировать и при обращении свойства к полю, и при обращении конструктора к полю. И не надо отдельные методы на каждый чих-пых-валидацию заводить. А?
...
Рейтинг: 0 / 0
Внутри класса лучше использовать что - свойства или поля?
    #38543805
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Не все атрибуты валидации работают с полями (например, Compare)
2) Эти атрибуты достаточно ограничены, иногда нужна сложная логика валидации
3) Лично моя практика - атрибуты валидации ближе к UI, для проверки при вводе данных.

А так, безусловно, как хотите, так и делайте
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Внутри класса лучше использовать что - свойства или поля?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]