Или допустимо разрешить прямой доступ к переменным класса, если требуется
много исследований в области хорошей разработки программного обеспечения и производительности труда программистов показывают, что обычно полезно скрывать детали того, как что-то реализовано. Если человек А пишет класс, то у него / нее есть определенные предположения о том, как класс должен работать. Если человек B хочет использовать класс, то у него / нее часто возникают разные предположения о том, как должен работать класс (особенно, если человек A плохо документировал код или даже вообще, как это бывает слишком часто). Тогда человек B может неправильно использовать данные в классе, что может нарушить работу методов класса и привести к ошибкам, которые трудно отладить, по крайней мере, для человека B.
Кроме того, скрывая детали реализации класса, человек А может свободно переделывать реализацию, возможно, удаляя переменную count
и заменяя ее чем-то другим. Это может произойти, потому что человек А находит лучший способ реализовать count
, или потому что count
был там только как инструмент отладки и не нужен для фактической работы ToggleOutput
и т. Д.
Программисты не пишут код только для себя. Как правило, они пишут код для других людей, который будет поддерживаться для других людей. «Другие люди» включают вас через пять лет, когда вы смотрите на то, как вы реализовали что-то, и спрашиваете себя: Что, черт возьми, я думал? Сохраняя детали реализации скрытыми (включая данные), которые вы имеете свобода изменять это, и клиентские классы / программное обеспечение не должны волноваться об этом, пока интерфейс остается тем же.