オブジェクト指向は役立つ?

釣られたら負けだと思っている。けど、負け組でもいいや。

脱オブジェクト指向のススメ - 雇われIT社長の乱心ブログ ITmedia オルタナティブ・ブログ

要は、現場の開発において発生するいろいろな課題を解決できないのは、オブジェクト指向などをよく理解していないからでは?と思いこんでいるようである。

エエエ、プログラミングの手法や実装の方法が、現場の開発において発生する様々な課題の解決につながるシーンなんてほとんど無いと思うんだけど…。そんなオブジェクト指向で解決するような実装上の問題ばかり発生してたら、そりゃ羨ましい限りだ。みんなで頭しぼってナイスなアイディアによる粋でクールなコーディングで万事解決? ありえねー。現場の問題なんてスケジュールが合わないとか、時間が足りないとか、仕様書が無いとか、質問投げても返ってこないとか、当初の要件と180度反対の考え方に基づく矛盾する追加仕様とか、そんなのがほとんどだ。それは実装の問題じゃない、と気づかせてやることはできなかったのか。

実装レベルの問題とプロジェクト遂行における問題は違う。「これはひどい」タグ付けて、別のブログへ。

U20プログラミングコンテストで成果を出したいけど出せそうになくて必死こいている d金魚による dKingyo Utility Toolkit 日記 - OOPを否定とか批判とかする前に・・・

OOPという考え方は必要な機能を実装したらリライトをしないような形で表現する所が素晴らしいと感じるのです。

おいらは逆にリライトしやすいという点がオブジェクト指向のメリットであると感じる。クラスに機能を追加していく過程で元のコードに無理が生じてきたら容赦なく書き直しても良い、ていうか積極的に書き直すべしだと思う。動いているコードに手を加えない、というのは現在のOOPスタイルではナンセンス。

ただしリライト(リファクタリング)はユニットテストの助け無くしてできない。というよりもOOPユニットテストツールと組み合わせて初めてその圧倒的なメリットを実感できるような気がする。データと手続きが一体化したオブジェクトは、一つ一つが単独で動作可能なミニプログラムのようなもの。このため単体テストとの相性が非常に良い。ユニットテストがしやすいという理由だけで「OOPは役立つ」と言い切ってもいいと思う。