Какой смысл обращаться к закрытым переменным через функции getter и setter (accessor)?

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

Тем не менее, я всегда вижу переменные, которые становятся частными, а затем функцию getter и setter, используемую для извлечения этого значения (иногда даже указатель на эту переменную!). Например, int a является частным, чтобы предотвратить публичный доступ, но тогда getA() и setA() разрешают прямой доступ к ним.

Так разве функции геттера и сеттера не бросают вызов тому смыслу, что они являются частными?Я имею в виду, что частные переменные с функцией доступа такие же, как и публичные переменные, изменяется только код для доступа к ним. (object.variable vs object.getVariable())

Есть ли причина, по которой люди делают переменные частными с помощью функций доступа? Есть ли какие-либо преимущества по сравнению с тем, чтобы сделать его публичным?

Я говорю о программировании в целом, но в основном на языках C (т.е.C, C++, C#, Obj-C).

10
задан πάντα ῥεῖ 4 August 2015 в 16:47
поделиться