Да, я думаю, что это должно быть сделано более или менее безоговорочно. Если переменная состояния находится в некотором базовом классе, она должна более или менее всегда быть закрытой. Если вы разрешите защитить его или сделать его общедоступным, все унаследованные будут использовать его напрямую. Эти классы, в свою очередь, могут быть классами, написанными вашими коллегами в каком-то другом проекте. Если вы вдруг решили посмеяться над базовым классом и рефакторинг, например, имя переменной для чего-то более подходящего, все пользователи этого состояния должны быть переписаны.
Это, вероятно, не проблема, если вы единственный программист или разрабатываете какой-то код, который никто никогда не будет использовать. Но как только число подклассов начнет расти, оно может стать действительно волосатым. Должен любить прозрачность!
Однако я не лучший ребенок богов на этой планете. Иногда я обманываю;) Когда вы в классе владельца, я думаю, что можно получить доступ к личным данным напрямую. Это может даже оказаться полезным, поскольку вы автоматически знаете, что изменяете фактический класс, в котором находитесь. Учитывая, что у вас есть какое-то соглашение об именах, которое фактически говорит вам об этом, например имя некоторой переменной с подчеркиванием в конце: "someVariable _".
Ура!