嫌いだとかいいながら、オブジェクト指向で書かせてもらえないストレスを感じるようになった今日このごろ。
めちゃくちゃなスパゲティで汎用性ゼロのコードができあがることのほうが多い、というのを実体験しはじめてるのもたしかなんだけど……。
でも使いたくなるときもたしかにある。ものは考えようだと思ったんである。
まず「オブジェクト指向」という言葉が悪い。この世界によくある、意味を混乱させるために作られたキャッチフレーズの一つだと思う。WEB2.0とかと同じ。
とにかく、もしいまから勉強する人がいるなら、ぜひいってあげたいことがある。
「自動車オブジェクトというのを考えてみましょう」といわれたら、その話は忘れてください。
混乱するだけだし、わたしも混乱した。その人も混乱してる可能性が高いです。
しかし、オブジェクトの思想にはもちろん意味がある。以下は、業務経験1年未満のわたしの理解なので、間違ってたりかえってわかりにくかったりしたらごめんなさいだけど……。
オブジェクトというのは、要するに名前空間のことだ。それ以上でも以下でもない。
つまり、他の名前空間と重複する名前を使うことができる、という、それだけのことだ。まったくのところ、車のハンドルなんかとは少しの関係もないのである。
new とかすると、その名前空間がもう一つ作られる。それだけ。
もういちどいいたい。それだけなのだ。
つまりこれは、get() という名前の関数をいくつでも作ることができるということである。たしかにこれは大きな利点である。
結論。
オブジェクト指向は get() 関数のためにあるのだ。
だけどたとえば、変数名と関数名の途中に「 -> 」とか「 . 」(ドット)とかを許す言語があれば、あとはちょっとしたコーディング規約を用意するだけで同じことを実現できる。いや、よくあるある言語でも、代わりに「 _ 」(下線)や連想配列を使うことにしてしまいさえすればいい。それに近い言語もあるわけだし。
要するに、たいした話じゃあない。オブジェクト指向を使ってすばらしいコードを書く人は、使わなくたってやる人だろう、というあたりまえの結論が出てくるだけ。