В c++ я новичок и не могу понять, для чего, собственно, нужны геттеры и сеттеры? Почему нельзя просто сделать переменные внутри класса глобальными и изменять непосредственно их? В чем необходимость делать переменную приватной и создавать функции для ее модификации или получения ее значения?
Ответ
Плюсов много и вот некоторые из них:
можно выборочно давать доступ только к геттеру или только к сеттеру
предотвращать изменение переменной со стороны (выдавая геттеру ее копию)
не уверен насчет С, но можно ставить брейкпоинты на методы доступа, чтобы узнать, кто и откуда обратился
можно добавлять дополнительный код в геттер и сеттер
при установке значения проверять его валидность (и, например, бросать исключение)
при установке значения, инициализировать какие-то связанные вещи
получать геттером значение не из переменной, а вычислять его
логировать доступ к геттеру/сеттеру
реализовывать и переопределять поведение геттера/сеттера в дочерних классах
В целом, можно обойтись и без них, но тогда вырастет размер кода, больше времени будет уходить на отладку, компилятор не сможет предостеречь от связанных ошибок. И чем больше/сложнее проект, тем больше пользы они будут приносить.
Комментариев нет:
Отправить комментарий