なぜオブジェクト指向は嫌われているのか?

http://alfalfa.livedoor.biz/archives/51079543.html を読んで。だらだらとツッコミ入れる感じのメモ書き。

なぜオブジェクト指向は嫌われているのか?

たぶん、これは「坊主憎けりゃ袈裟まで憎い」ってヤツだろーな。予想だけど。「SE憎けりゃオブジェクト指向まで憎い」みたいな感じじゃないかと。袈裟には罪はないよ。

3 仕様書無しさん :2007/07/26(木) 00:46:57
オブジェクト指向を導入してる、という現場で見たのは、・・・

オブジェクト指向って「導入」するものじゃないと思う。「導入」って言うとある日を境に突然不連続な変化が起こるような印象を受けるけど、オブジェクト指向は絶対にそうはならない。
ある日を境に突然オブジェクト指向にはなれないし、
オブジェクト指向オブジェクト指向以外は不連続じゃない。
「本プロジェクトから導入だーっ!」ってやっちゃうから、嫌われちゃうのかもね。

15 仕様書無しさん :2007/07/26(木) 20:32:58
オブジェクト指向の問題点 1/2

・クラスが増えすぎる
  → 単純すぎる機能のためにクラスが作られる(いわゆる『低脳クラス』)
    → 例:キーと値のペアを保存する型が欲しい!⇒Bean
        文字列の分割がしたい!⇒Tokenizer

・オブジェクト脳になりすぎて、『サブルーチン的』な解決策に目が向かない

ああ、ありがち。ワカル。自分もそういうことしちゃったことあるよ。
でもまあ、それは「似非オブジェクト脳」なのよ。

31 仕様書無しさん :2007/07/26(木) 21:43:05
良い実装ってのは割と自明だよな
良い設計ってのはどんなだ?

まず言いたいのは「実装 ⊆ 設計」ってこと。実装だって設計の一種だよ。
で、僕は「オブジェクト指向的な設計」と「良い設計」は直交しているというか、斜交くらいかもしれないけど、要するに別の概念だと思っている。目指すべきは良い設計であってオブジェクト指向的な設計ではない。オブジェクト指向は良い設計ための手段だからね。目的と手段を履き違えてはいけない。で、オブジェクト指向は間違いなく「良い設計」の役に立つ。
じゃあ「良い設計(=デザイン)」って何よ?ってことになるわけだけど、一言でいえば「高い機能を小さなインターフェイスで操作できること」じゃないかな。これは身の回りの道具も一緒で、テレビやビデオ、携帯、デジカメなどの「良いデザイン」をイメージすればいいと思う。ただ、「高い機能」の「高い」って何?とか「小さなインターフェイス」の「小さな」ってどういう意味?とか突っ込みだすとなかなか難しいね。僕も分からん。
要するに言いたいのは、良い設計のためだと思ったらクラスだけじゃなくて関数APIも作ればいいんだよね。それを無理やり全部オブジェクトにしてしまうのは間違いでしょ、と。

142 仕様書無しさん :2007/07/28(土) 12:44:06
プロトタイプ⇒非OOPで作る又は動的OOPで作る
製品⇒プロトタイプをリファクタリングして、良い設計のOOPで作り直す
俺のところでは、上記で良い成果が出ているけどな。

あー、これはいいかも。
オブジェクト指向技術って、「知識」を「整理」する技術だと思う。プログラムってのは「動く知識」だからね。これを整理するのがオブジェクト指向技術。
重要なのは、オブジェクト指向は知識を「生み出す」技術じゃない、ってこと。だから、知識を生み出すフェーズでいきなりオブジェクト指向しようとすると、必ず失敗する。今まさに知識をひねり出そうとしている段階でいきなり「整理」できるわけねーじゃん。
だからオブジェクト指向が活躍するのはリファクタリングの時。不恰好でも兎に角「生み出した」知識をオブジェクト指向で「整理する」わけだ。この「生み出す」「整理する」をこまめに繰り返すのがXPというか、アジャイルというか、テスト駆動開発というか、ごにょごにょ。

143 仕様書無しさん :2007/07/28(土) 12:45:50
結構適性というか能力が必要だからな。

うーん、適性が必要とは思わないなぁ。
オブジェクト指向なんて所詮は「整理術」。確かに簡単じゃないけど、勉強して研鑽を積めば、誰でも(は言い過ぎかもしれないが)必ずできるようになると思う。
それよりも知識を「生み出す」ほうがよっぽど適性が要るんじゃない?僕はその適性に悩むことのほうがずっと多いよ・・・。