とても良い問題提起だと思います。 「直接変数を触る」というやり方、折角クラスをつくってもこれだと台無しですね。クラスは自らのメンバー変数に対して責任を持つものです。多少なりとも込み入ったクラスならば、メンバー変数の使用法に一定の法則、規則というものがあって、それを無視した操作というのは秩序を乱します。要するにそれがバグのもとです。だから、クラスは自身のメンバー変数への無秩序なアクセスを禁止するため、private にします。 ですから「直接変数を触る」のがまずいということには、どなたも異論が無いはず。 で、メンバー変数を直接にではなく、間接的に触るようにしたものがプロパティです。そうすればデバッグの時にブレークポイントを設定できるし、変な値が書き込まれないよう、チェックを施すこともできる。これで、メンバー変数のアクセスの仕方に一定のルールを設けることが可能となります。 これで一切の問題が無