パブリック

 自分でもどうなるか分からないプログラムを書いているときに、とりあえずパブリックにしとくという技が使えるようになった。

 このクラスがどう使われるか分からないというときに、privateと書いちゃうのはどうもまずいんじゃないか。privateと書くことで可能なことは減る。publicだと減らない。全メンバがpublicなら元のクラスを変更せずにあらゆることが出来る。

 ただ複雑になる。しかし使わなそうなメンバをpublicにしちゃうことで間違いやすくなるケースというのは実はそんなにないのではないか。あるプロパティをprivateにすることで、そのプロパティが必要になりそうなすべてのケースについてそのクラスが責任を持ってメソッドを書かなきゃならなくなるのだけど、実際問題そんなこと不可能だ。だいたい必要そうなメソッドだけ用意して、あとは中身をpublicで公開して「さあ好きなようにいじりなさい」とやっとけば十分なのではないか。

 ライブラリは普通そういう風に作る。あるところからそれが逆転して、外部から呼ばれるもの、内部で処理するものをかっちり分けるようになる。しかし何の根拠があって、それ以外は外部から呼ぶ必要がないと決められるのだろう。仕様だから、こういう風に動くものだから、といったって、本当にそういう風に動くものなのかは誰もわかっちゃいない。仕様変更が起こるということは、そのクラスが何を行うかが確定しないということで、このクラスはこの機能を持ってればいいと言えなくなるということだ。じゃあもう全部パブリックでいいんじゃねえのという気がする。