publicにして「このメンバは呼ばないでください」とコメントとかで警告文を記述するくらいなら、privateにするべき。

変数をpublicにすると...その変数は、あらゆる所からあらゆるタイミングで書き換えられる恐れを配慮しながら設計・実装しないといけなくなるから、オススメはしない。

例えば...HPが0になった瞬間、ゲームオーバーと表示しないといけないプレイヤークラスがあったとして、HPという属性をpublicにすると、player.hp=0の操作を行っても、HPがゼロになった瞬間を検出できず、ゲームオーバーが表示できなくなってしまう。