Термин | Описание |
Getter | Метод для получения значения свойства |
Setter | Метод для установки значения свойства |
Backing field | Скрытое поле для хранения значения |
- Полные свойства с backing field
- Автосвойства (auto-implemented properties)
- Свойства только для чтения (read-only)
- Вычисляемые свойства
- Использование методов getX() и setX()
- Аннотации @Getter и @Setter в Lombok
- Record-классы с автоматическими свойствами
Сценарий | Пример реализации |
Валидация данных | Проверка в setter перед присвоением значения |
Ленивая инициализация | Инициализация при первом обращении через getter |
Уведомление об изменении | Вызов события при изменении значения |
- Используйте свойства для доступа к полям класса
- Избегайте сложной логики в getter-методах
- Минимизируйте побочные эффекты при обращении к свойствам
- Соблюдайте принцип инкапсуляции
- Свойства с тяжелыми вычислениями
- Сеттеры без проверки входных значений
- Избыточная вложенность свойств
- Нарушение принципа единой ответственности
Критерий | Свойства | Методы |
Синтаксис вызова | obj.Property | obj.Method() |
Возможность параметров | Нет | Да |
Идеологическое назначение | Доступ к состоянию | Выполнение действий |
- Индексированные свойства (C# indexers)
- Свойства с параметрами (VB.NET)
- Динамические свойства (Python, JavaScript)
- Асинхронные свойства (экспериментальные реализации)
Правильное использование свойств делает код более читаемым и поддерживаемым, обеспечивая контролируемый доступ к внутреннему состоянию объектов. Выбор между свойствами и методами должен основываться на семантике операции и соглашениях языка программирования.