Effective C++ 第4章22項
クラスのデータメンバはprivate宣言するというのは当然。もちろんこれはカプセル化のため。カプセル化しておけば、中身の実装方法を変更してもそのオブジェクトを使う側は変更する必要がない。これは複数人で協力してコードを書くような場合には非常に重要。
本ではさらにprotectedも使うべきではないと言っている。そこまでは考えたことなかった。でも確かに基底クラスのデータメンバの修正が入ったら、派生クラスも合わせて修正しなくてはならない。これがprivateでアクセスするための関数を用意しておけば変更箇所は少なくて済むだろう。
といいつつ、ActionScriptで書いたゲームではメンバをpublicにして外からアクセスしている。その場限りのコードだしと手抜きしてしまっている。これが癖になってしまわないように注意してコードを書くようにしないと。