В классах переменные часто делаются закрытыми для инкапсуляции, а ограничение переменных определенной областью позволяет лучше контролировать ошибки и меньше ошибок. Это имеет смысл, поскольку чем меньше мест для доступа к переменной, тем меньше мест может возникать ошибка с этой переменной.
Однако я всегда вижу закрытые переменные, а затем функцию получения и установки, используемую для получения этого значения (иногда даже указатель на эту переменную!). Например, int a
является частным для предотвращения публичного доступа, но тогда getA()
и setA()
разрешают прямой доступ к ним.
Так почему функции получения и установки не могут быть конфиденциальными? Я имею в виду, что частные переменные с функцией доступа такие же, как публичные переменные, только код для доступа к ним изменяется. (object.variable против object.getVariable ())
Есть ли причина, по которой люди делают переменные приватными с помощью функций доступа? Есть ли какие-либо преимущества по сравнению с публикацией?
Я говорю о программировании в целом, но в основном на языках C (т.е. C, C ++, C #, Obj-C).