あのさ、そんなのケースバイケースだよ。

特定のクラスからしか操作したくないならprivateかprotectedにするけどさ、
OOPだと、DTOっつうものがあって、こいつはいろんなクラスをたらい回しされる。

そうすっと、仮にセッター作ってもどのみちいろんなところからいじられちゃうわけで、
もはや、privateやprotectedにする意味は殆ど無いし、むしろ、邪魔。

だから、用途に合った設定をすべきで

>publicはメソッドのみ。プロパティには使わない

みたいなステレオタイプな認識しかできないやつは、
そもそもグラマには向いてないのさ。