オブジェクト指向ってクソじゃねぇかよPart3

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/11/22(木) 20:07:52.47ID:OdN2A7JT
無理やりオブジェクト指向にしたから出てきた問題を解決して凄い凄い言ってるだけ。
単なるマッチポンプ。


カプセル化(英語:encapsulation)とは、オブジェクト指向を構成する概念の一つで、
オブジェクト内部のデータを隠蔽したり(データ隠蔽)、オブジェクトの振る舞いを隠蔽したり、
オブジェクトの実際の型を隠蔽したりすることをいう。

偏差値の低い学校向けの情報処理系教科書において「大変すばらしいものであり絶対に使うように」と大体的に宣伝された。

一方、カリフォルニア大学バークレー校の有識者を中心としたインターネットを作った人たちは「階層化の有害性」として
「絶対に使うな」としている。大雑把にいうと、その時は良くても、将来的な改修の際に隠蔽されたデータに
アクセスできないと解決できない問題が出てきて、結果的にデスマーチに陥るというのである。

オブジェクト指向の発案者であるアラン・ケイもコーディング規約(頭文字にアンダースコアを付けるなどの命名規則)で
縛る程度にすることを推奨しており、アラン・ケイが関わったオブジェクト指向プログラミング言語にはどれも「private」
という概念はない。

https://monobook.org/wiki/%E3%82%AB%E3%83%97%E3%82%BB%E3%83%AB%E5%8C%96

前前スレ
オブジェクト指向ってクソじゃね?
https://mevius.5ch.net/test/read.cgi/tech/1535085129/

前スレ
オブジェクト指向ってクソじゃねぇよ? Part2
https://mevius.5ch.net/test/read.cgi/tech/1539872441/
2018/11/22(木) 20:13:05.54ID:vqLc4BhY
ここまでオブジェクト指向のメリットなし
2018/11/22(木) 20:59:26.40ID:R0GBuPHm
オブジェクト指向の是非はさておき
Smalltalkはウンコ
2018/11/22(木) 22:02:40.52ID:3Ij8+ioX
プロジェクトメンバーが皆アランケイならもちろんそんなものは不要

強い型付けだのカプセル化だの名前空間だのは俺を含めたアホのための技術
であり、
コンパイラさんエラーメッセージをありがとう、今日もバグが事前に検知できたよと感謝の十万回単体テスト
2018/11/22(木) 22:44:43.29ID:AcqNnxh2
みんなSmalltalk大好きで困っちゃうわー
2018/11/22(木) 23:00:07.78ID:VUc8aEEA
熱いsmallalk談義
内容は理解出来ないけど
その熱さは良いよ
2018/11/23(金) 12:16:28.55ID:xUgPEkHQ
だから言ったじゃん
ピュアオーディオとか純喫茶とか純文学の話になってるだろ
それに連なる『純オブジェクト指向』だ
ここで純オブジェクト指向と目されるSmalltalkを持ち出してピュア談義してるだけだ

オブジェクト指向≒Javaと見做されてる昨今では「Javaはクソ」≒「オブジェクト指向はクソ」となるのが普通だ
そこにわざわざ純オブジェクト指向なる概念を持ち出すから話がややこしくなる

平たく言うと、Javaの開発案件がたちまちクソの山になるのはそれがオブジェクト指向だから、っていう話だ
それも、数値にしがたい負の感情を産み出す母体になってる
オブジェクト指向にメリットはなく、代わりに数値化できないデメリットが業界で拡大再生産されてる
その根幹原因がJava≒オブジェクト指向にある
クソなんだからメリットが生産されるわけじゃない
デメリットが生産されてんだよ

「現状のオブジェクト指向が上手く行かないのは、それが純オブジェクト指向じゃないから」
それを延々話してるんだよ
その「純オブジェクト指向」なる状態が、あり得ないものか、未だに存在してないものか、そもそも存在出来ないものかは知らないが、
現状の実態たるJavaの話から乖離して、延々と架空の話を続けてるだけだろ
現実を見たくないからわざわざSmalltalkなんて引っ張り出して来てるんだよ
それだけクソってことだろ
2018/11/23(金) 12:38:27.53ID:IHq0MGQO
まあでもJavaってオブジェクト指向だからクソなんだろ?
9デフォルトの名無しさん
垢版 |
2018/11/23(金) 12:40:10.05ID:3lsJKaBh
JavaのWrite once, run anywhereに代わる新しい標語を考えよう!
まず俺からな。

Java -- Motor of all fails --
10デフォルトの名無しさん
垢版 |
2018/11/23(金) 12:41:08.98ID:3lsJKaBh
予測変換で間違えた!
では改めて。

Java -- Mother of all fails --
2018/11/23(金) 12:45:14.41ID:YugcRL6k
ぷぷぷwww間違えてやんのwww
2018/11/23(金) 13:01:19.47ID:/Y0l7Zgd
ここまでオブジェクト指向にメリットなし
2018/11/23(金) 13:07:15.96ID:EBrY1e8N
オブジェクト指向は糞の山を作りやすいというのがメリット
2018/11/23(金) 13:08:58.72ID:8zdH1C48
DBから取ってきたデータをただの構造体としてしか使ってない
Java現場ばかりなんだがそれをオブジェクト指向と言うのか
2018/11/23(金) 13:09:18.71ID:t8DmZZYh
>>7
Smalltalkが純オブジェクト指向?Self見てから言えよw
2018/11/23(金) 13:15:31.31ID:hVgyH4Uc
SELFよりはIo派
2018/11/23(金) 13:16:39.23ID:hVgyH4Uc
非同期メッセージングもあるし
2018/11/23(金) 13:24:25.52ID:YugcRL6k
>>14
いわないんじゃない?
せめてO/Rマッパーを使ってオブジェクトに変換しないと
でもO/Rマッパー使うの常識だよね?
2018/11/23(金) 13:34:30.42ID:8zdH1C48
>>18
使ってるけど、getterとsetterがあるだけのオブジェクトをサービスでごにょごにょしてる
サービスにロジックがある
20デフォルトの名無しさん
垢版 |
2018/11/23(金) 13:50:21.91ID:rfRL5vB8
>Javaの開発案件がたちまちクソの山になるのはそれがオブジェクト指向だから
有る意味それは合っている
でもそれはあくまで
オブジェクト指向を効果的に使うのが難しいからで
オブジェクト指向そのものが駄目な訳ではない
効果的に使うのが難しいのは
どの様に効果的に使うか?
という方法論やセオリーが十分教範として出来上がっていない
と言うのが原因だと自分は思っている
そういう教範がそのうち出来るだろう
と思っていたけど
現実には未だもって出来ていないみたい
その辺が効果的に使う事を難しくしている
自分も完全には理解していないけど
部分的に使うだけでも効果が有って
これを完全に使いこなしたら
どれ程の物なんだろうか?
と有る意味期待をしている
自分はこのスレを通す事で
オブジェクト指向プログラミングの何が解り難いのか?
という部分がはっきりして
何らかの教範が出来る材料になればいいんじゃないかなぁ
って期待している
2018/11/23(金) 14:24:45.75ID:t8DmZZYh
>>18
ORMなんか使うなよ。OODB使えよ。
2018/11/23(金) 14:32:04.97ID:wr9ihIGx
>>20
え?これだけ書いて何も中身ないじゃん
お前という人間がクソ何だな
技術者辞めて農業でもやってろよ
2018/11/23(金) 14:35:25.11ID:1KJ0KFwU
農業なめてんじゃねえよITドカタが
24デフォルトの名無しさん
垢版 |
2018/11/23(金) 18:08:55.01ID:MPvH8zSl
>>20のまとめ:
・オブジェクト指向は効果的に使うとすばらしい
・オブジェクト指向を効果的に使うのは難しい
・オブジェクト指向を効果的に使えるような方法論が必要だ

いや、オブジェクト指向なんて使わなきゃいいじゃん。
オブジェクト指向を使うために出てきた問題の解決方法をひねり出してイキる、まさにマッチポンプ。>>1の通りじゃんww
25デフォルトの名無しさん
垢版 |
2018/11/23(金) 18:39:37.15ID:5BpJnoAE
リファクタリングを考えるなら現状オブジェクト指向しかない。
2018/11/23(金) 18:41:40.04ID:wr9ihIGx
>>25
意味不明
2018/11/23(金) 23:37:46.54ID:DenX8efU
静的型付けの方がリファクタリングはやり易いけど
オブジェクト指向は関係なくない?
28デフォルトの名無しさん
垢版 |
2018/11/23(金) 23:39:22.31ID:ROaTpR2G
リファクタリングやりたすぎやろ
2018/11/23(金) 23:50:37.13ID:YugcRL6k
そりゃTDDやってるからな
テスト駆動だとリファクタリングが開発の1フェーズだよ
30デフォルトの名無しさん
垢版 |
2018/11/24(土) 02:13:00.74ID:NJ75NL6c
928 デフォルトの名無しさん 2018/11/21(水) 18:59:11.61 ID:8Yc2p7H1
>>922
>ナンチャッテメッセージングスタイルになったのは

チンポ.オシッコを出す
チンポ.オシッコを止める

さっきトイレでやってきた。


929 デフォルトの名無しさん 2018/11/21(水) 19:07:17.83 ID:8Yc2p7H1
>>915
>単なる動的なメソッド呼び出しをメッセージと称し、ただしコールするメソッドが見つからない場合だけメッセージを
>ハンドリングできる省コストなナンチャッテメッセージングスタイルに落ち着いた。

×
俺.オシッコを止める 俺.オシッコを出す

俺.チンポに力を入れる 俺.チンポから力を抜く
31デフォルトの名無しさん
垢版 |
2018/11/24(土) 02:43:42.26ID:NJ75NL6c
955 デフォルトの名無しさん 2018/11/22(木) 01:49:36.77 ID:ROOr0q+m
>>954
>違うという理由を人に聞く前に
>そうだという理由を述べるのが筋だろ

ならばシステムをオブジェクト単位に分ける必要性について答えておこうか。

>>951
>オブジェクト単位に分ける工程が完全に削除できるんだから

戦神のベルトが倉庫を圧迫。仕分けましょう【DQ10】
http://okirakudq10.com/archives/53537205.html
2018/11/24(土) 06:11:54.47ID:rcmII/yb
オブジェクト指向ってしっくりこないんです
2018/11/24(土) 06:28:10.41ID:emfrr2Lm
>>31
> ならばシステムをオブジェクト単位に分ける必要性について答えておこうか。

システムを複数のファイルに分ける必要性と同じでは?
2018/11/24(土) 09:15:39.26ID:eoAr82J8
ここまでオブジェクト指向のメリットなし

ピロリン♪
鉄山靠をマスターしました!←New

鉄山靠マスターしたわ
2018/11/24(土) 09:17:40.85ID:If29D5n7
OOPのやり過ぎで手続き型のアルゴリズムを書けない体質になってしまった
OOPなら5分で書ける処理をレビューに出したら仕様書に無いクラス作らないでっていわれてさ
手続き型で書き直そうとしたら4重ループにif分岐だらけの複雑なアルゴリズムになって頭が大混乱して手が止まっちゃった
結局それは破棄してOOPで書いたコードにロールバックしてメソッドを地道にインライン展開してテストを繰り返して1日かかってようやく完成した

俺みたいな頭が悪い人には手続き型は難しすぎる
OOPで物事をシンプルに簡単にわかりやすく整理しながら作らなきゃ先に進めない
2018/11/24(土) 09:37:00.38ID:Wpa1q256
例えばポリモリフィズムやるとしてもそのオブジェクトが
どこでどんな風にその多数のメソッドを利用しているか、どういう制約の元でどういうことを行うものとして
設定してるかがしっかり把握されてるクラスなんて
あんまりないわけよ。
てか実際はほとんど変更不能なほどガチガチに暗黙の仮定が置かれてるのにドキュメントがなかったり
コードから把握するのが困難なコードばっかりだったりする。
こういうのが当たり前の状況では役には立たんな。
そして信者が次にいうのはそういう風に作った奴が悪いって話になる。
一理はあるが上記のような暗黙の仮定が注入されやすいというのはオブジェクト指向だからってのは多いにあると思ってる。
2018/11/24(土) 10:01:58.09ID:eoAr82J8
具体的にはメソッドの呼び出し制限が不明だよね

init呼ぶ前に呼んでおかないと駄目
init呼んでから出ないと駄目
2018/11/24(土) 12:09:51.50ID:jQRgCWH8
オブジェクト指向の問題じゃなくて静的型付けの問題だろう
2018/11/24(土) 12:13:59.69ID:emfrr2Lm
話をまとめると、オブジェクト指向をやるには
しっかりテストしてないとだめということかな?
2018/11/24(土) 12:16:13.11ID:emfrr2Lm
オブジェクト指向じゃないプロジェクト
例えばCOBOLなんかだと、

どこでどんなふうに関数が使われているか
わからなくても、大丈夫って話をしているようだ

それが何故なのかさっぱりわからないので
理由を教えてくれ  >>36 >>37
2018/11/24(土) 12:16:50.14ID:CDKSSVF4
呼んじゃいけない状況にそもそもならないように作る
呼んじゃいけない状況で呼んだら例外を投げる
呼んじゃいけない状況を属性やドキュメントコメントに書く
オブジェクト指向はこのへんしっかりしてるから良いね

メインルーチンでグローバルの初期化関数を呼ばないとダメ
関数の呼び出し順序が暗黙に決まってる
入力範囲が決まっててそれに従わないと未定義処理
決まりごとがドキュメントコメントになってなくて分厚いマニュアルから必死になって探さないといけない
このように間違えようとしたら間違えられるのにわかりやすい説明がコードエディタから見れないという悪い構造はむしろ非オブジェクト指向の方が多い
2018/11/24(土) 12:22:32.84ID:emfrr2Lm
> init呼ぶ前に呼んでおかないと駄目
> init呼んでから出ないと駄目

ファイルをオープンする前にリードしたらだめ
だから手続き型は大変なんだ
2018/11/24(土) 12:22:54.51ID:Wpa1q256
>>40

>どこでどんなふうに関数が使われているか
>わからなくても、大丈夫って話をしているようだ
こんな話は一切してない。

オブジェクト指向的な言語でクラスメソッドにガツガツ詰め込むようなことすると
関数的なものよりも思った以上の暗黙の仮定を置いてるコンテキストでしか動作しないものが
出来上がりやすいと言ってる。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況