■ このスレッドは過去ログ倉庫に格納されています
オブジェクト指向ってクソじゃねぇかよPart4
- 1 :デフォルトの名無しさん:2019/04/28(日) 23:38:35.09 ID:URSBxRTf.net
- 無理やりオブジェクト指向にしたから出てきた問題を解決して凄い凄い言ってるだけ。
単なるマッチポンプ。
カプセル化(英語: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/
前スレ
オブジェクト指向ってクソじゃねぇかよPart3
https://mevius.5ch.net/test/read.cgi/tech/1542884872/
- 954 :デフォルトの名無しさん:2019/10/07(月) 08:34:06.70 ID:iJ2tiwHS.net
- >>936
staticおじさんの方が君よりもまともだと思ってる
- 955 :デフォルトの名無しさん:2019/10/07(月) 08:46:30.67 ID:iJ2tiwHS.net
- staticおじさんは状態が必要ないところではstaticメソッドを使うんだという当たり前のことを言ってるだけだよ
.NETフレームワークがオブジェクトを用意してるからビジネスロジックではそれを操作するのが主で自ずとstaticメソッドでロジックを組み上げるってこと
当時はASP.NET Web Formsを使ってた、フレームワークに従って作ればそうなるよ、ややこしいことやらんでいいよって文脈だった
staticおじさんエアプか?
- 956 :デフォルトの名無しさん:2019/10/07(月) 08:54:40.28 ID:+Gu4JkVA.net
- >>954
なんでやねん。
だったら質問に答えろや。
お前は全部staticメソッドで作られたコードをオブジェクト指向のコードと言い張るんか?
元の925の主張はそうだっただろ。
お前はどうなんだ?
- 957 :デフォルトの名無しさん:2019/10/07(月) 08:59:34.03 ID:iJ2tiwHS.net
- オブジェクトおじさん「これはオブジェクト指向なのか!?」
- 958 :デフォルトの名無しさん:2019/10/07(月) 09:00:38.33 ID:iJ2tiwHS.net
- >>956
クラスオブジェクトに属してるから立派なオブジェクト指向です
- 959 :デフォルトの名無しさん:2019/10/07(月) 09:04:09.42 ID:iJ2tiwHS.net
- Mathクラスは数学に関するロジックを集約したオブジェクトですよね
- 960 :デフォルトの名無しさん:2019/10/07(月) 09:12:19.20 ID:iJ2tiwHS.net
- 危惧してるのは状態を作ればオブジェクト指向になるんだって思いがちなところ
ビジネスロジックでオブジェクトを作り出したら危険信号、データ構造とロジックの分離ができてない証拠
昨今流行りの関数型がデータ構造に処理を丸投げすることで複雑さに対処するようにオブジェクト指向でもビジネスロジックとデータ構造の見極め大事
staticメソッドは悪いものじゃない
- 961 :デフォルトの名無しさん:2019/10/07(月) 09:23:22.01 ID:+Gu4JkVA.net
- >>958
staticメソッドはデメリットがない、全部staticにすれば?ってのが奴の主張
オブジェクト指向プログラマーにとってstaticにするべきではない部分までstaticにしようとするから、こんな話になったんだろ?
必要のない と見なす部分が広すぎ
- 962 :デフォルトの名無しさん:2019/10/07(月) 09:26:34.03 ID:1ngSbCFm.net
- >>958
それはクラスを名前空間として利用してるだけでオブジェクト指向とは言わんだろ
- 963 :デフォルトの名無しさん:2019/10/07(月) 09:36:16.55 ID:iJ2tiwHS.net
- >>961
奴とは?
- 964 :デフォルトの名無しさん:2019/10/07(月) 09:38:05.78 ID:iJ2tiwHS.net
- >>962
クラスオブジェクトに属してる
名前空間ではないよ
- 965 :デフォルトの名無しさん:2019/10/07(月) 09:38:44.22 ID:iJ2tiwHS.net
- クラスで分類するからオブジェクト指向
- 966 :デフォルトの名無しさん:2019/10/07(月) 09:51:31.82 ID:+Gu4JkVA.net
- >>963
>>906な。上の925も間違い。
>>964
そういう言語仕様レベルの話じゃなくて、実質、名前空間のようにしか扱われていないと言いたいのだろう。
正直、アレをオブジェクト指向扱いするのはどうかと思う。オブジェクト指向向け言語で書いたオブジェクト指向モドキだろ、あれ。
- 967 :デフォルトの名無しさん:2019/10/07(月) 15:50:12.22 ID:i6JqkWTj.net
- もしかして...staticおじさんをただ単にstaticを使う人への煽りと解釈している人と、「実はオブジェクト指向ってしっくりこないんです!」の記事で大炎上した人という意味で解釈している人がいるんじゃないかな?
- 968 :デフォルトの名無しさん:2019/10/07(月) 16:27:55.17 ID:iJ2tiwHS.net
- >>966
クラスオブジェクトに属してるんだからオブジェクトだよ
newは省略されてるだけ
名前空間とは明らかに違う
継承、ポリモー、カプセル化を使わないとオブジェクト指向じゃないとでも思ってるのかな?
クラスの存在そのものがオブジェクト指向だよ
- 969 :デフォルトの名無しさん:2019/10/07(月) 17:23:04.80 ID:i6JqkWTj.net
- >>968
世の中にはC言語でオブジェクト指向なプログラムを書いている人もいるから、その理屈は少し怪しいな。
- 970 :デフォルトの名無しさん:2019/10/07(月) 18:03:33.19 ID:QTLP3T8x.net
- アランケイ「オブジェクト指向発明したけどC++がやりだしたクラスなんか知らないよ」
- 971 :デフォルトの名無しさん:2019/10/07(月) 18:49:05.79 ID:A3f3M3xS.net
- ストラウストラップのハゲは列挙体使うときにクラスを名前空間代わりにして使ってたな
- 972 :デフォルトの名無しさん:2019/10/07(月) 19:30:59.83 ID:ft7AjSjh.net
- >>968
>クラスの存在そのものがオブジェクト指向だよ
チンポは独立した知能回路を有しているからオブジェクト指向だよな!
- 973 :デフォルトの名無しさん:2019/10/07(月) 19:41:54.84 ID:RwllG7mn.net
- まずは純粋にCだけで書かれたWindowsプログラムを読んでみることをおすすめする
言語がオブジェクト指向に対応してるにこしたことはないけど、
一般人には無縁のパラダイムだよ
- 974 ::2019/10/07(月) 19:55:53.90 ID:T0peqJ1N.net
- >>973
あれのメッセージループの記述が、どんな教科書でも switch〜case なのは、そろそろいい加減にやめないといけない、と、強く感じているのですが…
一方、私は無駄に継承を重ねることにしました…薄い層にスライスしてメッセージループと、それ以外の関数との関係を強調する試みです
- 975 :あ:2019/10/07(月) 20:45:15.45 ID:cbxlkLVD.net
- >>968
JavaでMath.sqrt(36)って書くとMathがクラスだからオブジェクト指向で
他言語でMath.sqrt(36)って書いてもMathがクラスじゃなくモジュールだったらオブジェクト指向じゃないってことになるね
型クラスが存在してるHaskellはオブジェクト指向そのものw
- 976 :デフォルトの名無しさん:2019/10/07(月) 21:30:40.10 ID:cbxlkLVD.net
- >>950
EFとか画面単位とか関係ない
↓こういう思考ロジック
[機能概要]
出品側として、商品を出品する。
購入側として、商品を選択し購入手続きをする。
↓
[関数シグニチャを想像]
出品する(出品者ID, 出品リスト)
購入手続きをする(購入者ID, 受け取り住所, 購入品リスト)
↓
[クラス化]
出品者クラス: [識別ID, 出品リスト], 出品する()
購入者クラス: [識別ID, 受け取り住所, 購入品リスト], 購入手続きをする()
リレーショナルモデリングでもオブジェクトモデリングでも
エンディティやオブジェクト間の関連を無視してまともなものはできないよ
- 977 :デフォルトの名無しさん:2019/10/07(月) 21:32:53.13 ID:2Ro4RUKT.net
- >>969
クラス的なものを使ってたらオブジェクト指向的なことができます怪しくないよ全然怪しくないよ
- 978 :デフォルトの名無しさん:2019/10/07(月) 21:34:11.03 ID:2Ro4RUKT.net
- >>975
そのモジュールとやらをクラスとみなすことでオブジェクト指向とみなすことは可能だよ全然余裕だよ
- 979 :デフォルトの名無しさん:2019/10/07(月) 21:35:30.78 ID:2Ro4RUKT.net
- >>971
はは。さすがハゲ。
- 980 :デフォルトの名無しさん:2019/10/07(月) 21:36:57.35 ID:2Ro4RUKT.net
- >>970
ケイちゃんのオブジェクト指向は今のWebサービスだかんな
- 981 :デフォルトの名無しさん:2019/10/07(月) 21:44:51.49 ID:2Ro4RUKT.net
- >>972
TI(ちんぽうちのう)ってかwwwやかましいわwww
- 982 :デフォルトの名無しさん:2019/10/07(月) 21:49:54.27 ID:2Ro4RUKT.net
- Webサービスがstaticメソッドで実装されてようがインスタンスメソッドで実装されてようがWebサービスの外からはWebサービスというオブジェクトしか見えない
ケイちゃんのオブジェクト指向はそういうでっかい視点でリモートでオブジェクトが協調する姿を画いてる
ケイちゃんにとってはクラスさえ瑣末なもの
- 983 :デフォルトの名無しさん:2019/10/07(月) 22:51:36.60 ID:PHxdOQnu.net
- やっぱり人間は構造化できてないものは理解できない
関係の理解も2つが限度
メッセージパッシングによるオブジェクト指向は構造化をめちゃくちゃにする
シミュレーションぐらいしか使い道がない
構造化万歳ダイクストラ万歳
- 984 :デフォルトの名無しさん:2019/10/07(月) 23:09:22.21 ID:gEYFs1Cq.net
- 何だっけ?大工ストライキのこーちょこちょだっけ?
- 985 :デフォルトの名無しさん:2019/10/07(月) 23:14:25.56 ID:PHxdOQnu.net
- 俺も大昔のギリシア人かと思ってた
- 986 :デフォルトの名無しさん:2019/10/07(月) 23:18:52.25 ID:RK8d645+.net
- もりかして:ダイクストラの互除法
- 987 :デフォルトの名無しさん:2019/10/07(月) 23:27:22.09 ID:aU+ghkHH.net
- お風呂に入ってアルキメデスの原理を発見したポルトガル人ですよ
- 988 :デフォルトの名無しさん:2019/10/08(火) 07:54:22.73 ID:dANDe70p.net
- >>955
staticおじさん、こんなこと言ってない...。
それ、staticおじさんに突っ込みを入れた人のコメントでしょ。
>理由があってstaticを使うのではなく、理由が無いからstaticを使う。
>理由が無い場合は、素直な方法を選ぶものだが、何が標準かというのが違う人なのですね。
>そこがオブジェクト指向が身についている人と、身についていない人との違いなのでしょう。
>>955はQiitaのstaticおじさんを無理して弁護してみた系の記事しか読んでいないのでは?
- 989 :デフォルトの名無しさん:2019/10/08(火) 08:49:51.98 ID:A8vN7xSK.net
- >>988
俺はstaticおじさんに詳しいんだ
- 990 :デフォルトの名無しさん:2019/10/08(火) 08:59:08.94 ID:A8vN7xSK.net
- 状態が必要ないならstaticを使うべし
状態に依存しないクリーンなメソッドであることを表すことができる
あるメソッドは状態に依存していて、あるメソッドは状態に依存してないそれらのメソッドは別のオブジェクトにするのが良いかもしれない
staticを使用することでこのような分析も可能になる
- 991 :デフォルトの名無しさん:2019/10/08(火) 09:08:00.47 ID:A8vN7xSK.net
- 貧血ドメインも悪いもののように言われているが間違ってる
データ構造を工夫すればビジネスロジックは状態を持たずシンプルかつクリーンになる
- 992 :デフォルトの名無しさん:2019/10/08(火) 09:11:50.67 ID:A8vN7xSK.net
- ドメインオブジェクトは状態を持たないといけないという思い込み呪いバイアスがこんにちのオブジェクト指向クソじゃないか旋風を巻き起こしてる
オブジェクト指向の本質は状態管理じゃないオブジェクトを分類することこそがオブジェクト指向
- 993 :デフォルトの名無しさん:2019/10/08(火) 09:35:25.89 ID:i7YnJzmB.net
- >>990
> 状態が必要ないならstaticを使うべし
それは同意するけど...
https://el.jibun.atmarkit.co.jp/minagawa/2010/04/post-ebc4.html
どこにそんなこと書いてあるの?
- 994 :デフォルトの名無しさん:2019/10/08(火) 09:38:58.49 ID:A8vN7xSK.net
- >>993
コメントまで全部読めばわかる
- 995 :デフォルトの名無しさん:2019/10/08(火) 09:39:50.83 ID:A8vN7xSK.net
- 俺はstaticおじさんにすごく詳しいんだぞ
- 996 :デフォルトの名無しさん:2019/10/08(火) 09:49:28.60 ID:i7YnJzmB.net
- >>995
どこ?引用してくれないかな?
しかも、記事本文で共有変数もpublic staticするとか言ってるぞ。
- 997 :デフォルトの名無しさん:2019/10/08(火) 09:49:29.44 ID:i7YnJzmB.net
- >>995
どこ?引用してくれないかな?
しかも、記事本文で共有変数もpublic staticするとか言ってるぞ。
- 998 :デフォルトの名無しさん:2019/10/08(火) 10:34:00.83 ID:A8vN7xSK.net
- 全部だ
- 999 :デフォルトの名無しさん:2019/10/08(火) 10:39:25.53 ID:7Xgl+ZbR.net
- 悪名高いsingletonパターンの代替となるmonostateパターンでは全ての変数をstaticにする
- 1000 :デフォルトの名無しさん:2019/10/08(火) 12:47:36.40 ID:197xv4OL.net
- 1つのクラスから複数のインスタンスを同時に生成して同時にアクセスするような場面ってそんなないでしょ?
繰り返し同じ関数をパラメータ変えて呼べば済むことが多いだけ
俺も信者に騙された一人だけど、やっぱ評論家はまず学歴見なきゃダメだと痛感した
- 1001 :デフォルトの名無しさん:2019/10/08(火) 12:55:57.81 ID:Xb/B1kWR.net
- 結論
オブジェクト指向がクソなのではなく、プログラマーがクソだった。
- 1002 :2ch.net投稿限界:Over 1000 Thread
- 2ch.netからのレス数が1000に到達しました。
- 1003 :2ch.net投稿限界:Over 1000 Thread
- 2ch.netからのレス数が1000に到達しました。
総レス数 1003
339 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★