オブジェクト指向が理解できない5つの理由 ~オブジェクト=物体論への批判~
1.オブジェクト=「もの」 という嘘
「もの」と言われても、理解できません。
プログラムのコードの中に、なぜ「もの」が存在するのでしょうか?
日本語で「もの」といえば、体積や質量や固さをもった「物体」を連想してしまいます。
信号機やエレベータを制御するプログラムなら、「もの」を扱うこともあるかもしれません。
しかし、ウェブアプリやデスクトップアプリを作るときに、データを扱うことはあっても、物体を扱う場面はないはずです。
2.「部品」の再利用 というキャッチコピー
これも1と同じ理由です。
「部品」という比喩が、ソフトウェアにはそぐわない気がします。
それに、再利用であれば関数でもできるはずです。
3.犬・猫オブジェクトを作って何の役に立つのか?
本でよく見かけます。
動物クラスを作って、犬オブジェクトを作る。
犬クラスを用意して、「ポチ」インスタンスを作る。
タイヤキ型クラスでタイヤキオブジェクトを作るという話もあります。
しかし、「犬・猫オブジェクト」を何に使うんでしょうか?
「アイボ」オブジェクトを作って犬型ロボットを制御するとか、「スライム」オブジェクトを作ってドラクエを作るとか、
そういう話ならまだ理解できるかもしれません。
しかし犬猫オブジェクトは、いつ誰が何のために作るのでしょう?何に使うのでしょう?
犬オブジェクトに名前をつけたり、色や年齢を設定したりして、何かウソ臭い感じがします。現場で使えなそうな気がします。
「吠えるメソッド」とか「走るメソッド」を実行したら犬がそのとおりに行動するんでしょうか?
その犬は、目に見えないし、手で触ることもできないのです。
やはりこれも、オブジェクト=物体論と同じ根っこのような気がします。
4.カプセル化、継承、メッセージなどの専門用語
オブジェクト指向の解説を見ると、必ず出てくるキーワードです。
新しい概念を説明するときに、新しい専門用語を使って説明するのは、無理があると思います。
5.再利用性が高まるというキャッチフレーズ
オブジェクト指向でなくても、再利用可能なプログラムは書けます。
関数じゃだめなんでしょうか?
まとめ
「オブジェクト指向などクソの役にも立ちません!」という意見もあるようです。
オブジェクト指向を知らなくても、使いやすくてバグの少ないプログラムをかけるのなら、それはそれでいいのではないでしょうか。