2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

カプセル化の有害性、オブジェクト指向は愚かな考え

1 :デフォルトの名無しさん:2020/06/18(木) 23:47:36.69 ID:l/2SQUll.net
カプセル化(英語:encapsulation)とは、オブジェクト指向を構成する概念の一つで、オブジェクト内部のデータを隠蔽したり(データ隠蔽)、オブジェクトの振る舞いを隠蔽したり、オブジェクトの実際の型を隠蔽したりすることをいう。

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

一方、カリフォルニア大学バークレー校の有識者を中心とした「インターネットを作った人たち」は「階層化の有害性」として「カプセル化は絶対にやめろ」としている。

https://monobook.org/wiki/%E3%82%AB%E3%83%97%E3%82%BB%E3%83%AB%E5%8C%96(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)

952 :デフォルトの名無しさん:2020/07/05(日) 13:14:57.78 ID:JiRnWiGC.net
JavaScriptとかpythonとか、元々、クラスはサポートしていないのに?
プロトタイプベースはオブジェクト指向じゃないとでも?

953 :デフォルトの名無しさん:2020/07/05(日) 13:17:49.53 ID:MQ9nuMmc.net
>>951
えじゃねえよ、なめんなよ

954 :デフォルトの名無しさん:2020/07/05(日) 13:18:05.20 ID:9F15TCk0.net
>>947
意味がないどころか、そこにしか意味がないんだよ。
それ「だけ」を見せるためのコードなんだから。staticとか
なら話の流れとなんにも関係がないのでそれこそ意味がない。

でもあえていうなら、そもそもまず連打が好きじゃ無い。自分ならループにするけど、
それだけでもない。

まず壊すようにテストすんの。null入れたり、変なオブジェクト入れたり。

で、privateをテストするんじゃなくて、要件通り動くかどうか。nullからint maxまで
回して、要件通りの結果が全てでくるか。変なオブジェクト入れたらどうか。
そういう感じ。

でも最初に書いたように、publicとprivateの話なんだから、そこで
エラーが出るか出ないかがないとこのスレ的にはなんの意味もない。

955 :デフォルトの名無しさん:2020/07/05(日) 13:18:37.20 ID:MQ9nuMmc.net
>>952
JavaScriptにもPythonにもクラスあるよ
クラスがオブジェクト指向の本質だと気づいたから追加されたんじゃないでしょうかねー

956 :デフォルトの名無しさん:2020/07/05(日) 13:19:41.30 ID:9F15TCk0.net
クラスの存在はOOPの大事な部分だけど、OOPの言語を使ってもほとんどOOPでは
無いというのはよくある話。巨大クラス一個とかだと頭を抱える。

957 :デフォルトの名無しさん:2020/07/05(日) 13:22:07.34 ID:MQ9nuMmc.net
>>954
現実にありえない実装見せて、ほらね、と言われても僕は戸惑うばかり
そんな現実にありえないことを想定するからまずいんじゃないですかね
現実にそういうコード書いてるんじゃないかと僕はちょっと君のコーディング力を
疑わしく思ってきたのだけれども

public経由で、標準出力に出力するようなprivateコードを一生懸命テストしますか?
がんばり屋さんだなとは思うけど、効率悪くないですかね

958 :デフォルトの名無しさん:2020/07/05(日) 13:22:29.69 ID:MQ9nuMmc.net
>>956
そんな極端な話ちゃうやろボケ

959 :デフォルトの名無しさん:2020/07/05(日) 13:24:13.83 ID:JiRnWiGC.net
そりゃ、クラスはオブジェクト指向を実現する上で便利だからね。大切な存在さ。でも、クラスなんて無くてもオブジェクト指向でコードは書けるし、逆に、クラスが合っても手続き型の記述をしたら、そりゃ、オブジェクト指向じゃねーわ。
つーか、クラスを使ったらオブジェクト指向ってマジで言ってる?
それってつまり、このスレで時々名前の出るstaticおじさんの書いたコードもオブジェクト指向だと言い張るつもり?

960 :デフォルトの名無しさん:2020/07/05(日) 13:25:43.22 ID:9F15TCk0.net
>>957
えーー、違うそうじゃ無い。多分君よくわかってない。
例なわけで実際にありえないとかありえる訳が無い。そんな話じゃ無いし
根本的な部分がわかってない。

publicでは問題がなく、private単体だと問題がでるコードなわけで。この意味はわかる?

961 :デフォルトの名無しさん:2020/07/05(日) 13:29:16.63 ID:MQ9nuMmc.net
>>959
staticおじさんの元の話知ってる? 僕はリアルタイムであれを読んでたからよく知ってるんだけれども
staticおじさんは必要なところではオブジェクト作るよ、でもASP.NETのForm Applicationのフレームワークには
もともとリッチなオブジェクトが用意されてるから実務ではそれを組み合わせるだけで事足りることが多いよ
だからstaticメインで組み上げてオーケーさって話だったよ

オブジェクト指向信者がアホな前提置いて話を発散させただけでstaticおじさんが言ってることはわりあいまともだった
こういう議論の場で神クラスを引き合いに出して批判するという極端なことやって意味があるのかなと僕は疑問ですね

962 :デフォルトの名無しさん:2020/07/05(日) 13:30:55.04 ID:JiRnWiGC.net
いや、そもそもstaticおじさんのコードはオブジェクト指向でも何でもねーよ!
話反らすな。

963 :デフォルトの名無しさん:2020/07/05(日) 13:32:41.77 ID:MQ9nuMmc.net
>>962
staticおじさんの書いたコードもオブジェクト指向だと言い張るつもり?

と君が聞いたからstaticおじさんに対する僕の所見を述べたつもり
ASP.NETのオブジェクトを使ってるならオブジェクト指向でしょ
オブジェクト指向が為せる技だと思うよ

964 :デフォルトの名無しさん:2020/07/05(日) 13:33:02.71 ID:MQ9nuMmc.net
オブジェクト指向便利だよね

965 :デフォルトの名無しさん:2020/07/05(日) 13:33:43.81 ID:9F15TCk0.net
コードあげてくれるのは偉いと思うので気がひけるのだが、上のコードは
privateとpublicの違いを表すための部分がまるですっぽ抜けてるし、そもそも
staticだし結構それ自体staticおじさん感がある。すまんw

966 :デフォルトの名無しさん:2020/07/05(日) 13:33:52 ID:JiRnWiGC.net
>>963
ちげーよ。ASPがオブジェクト指向であって、staticおじさんのコードはオブジェクト指向でも何でもねーよ。

967 :デフォルトの名無しさん:2020/07/05(日) 13:37:13 ID:MQ9nuMmc.net
>>966
でもASP.NETのフレームワークがオブジェクト用意してなかったらstaticおじさんはコード書けなかったと思うし
staticおじさんのコードはオブジェクト指向を有効的に活用した非常に優れたコードだと思いますよ
必要もないのにオブジェクト作るのはアホですわ

968 :デフォルトの名無しさん:2020/07/05(日) 13:38:05.15 ID:MQ9nuMmc.net
staticおじさんは必要な場面ではオブジェクト作るっていってるからねー
僕はstaticおじさんに詳しいんだ

969 :デフォルトの名無しさん:2020/07/05(日) 13:38:11.20 ID:9F15TCk0.net
神のGTO感があるw

970 :デフォルトの名無しさん:2020/07/05(日) 13:40:17.58 ID:MQ9nuMmc.net
物事の本質を見誤ると道を踏み外すよ
状態に依存してないのにインスタンスメソッドにしたりとか
staticメソッドを定義したらstaticおじさんと言ったりとか
そういうバカのできあがりですよ

971 :デフォルトの名無しさん:2020/07/05(日) 13:40:37.05 ID:JiRnWiGC.net
>>967

> >>966
> でもASP.NETのフレームワークがオブジェクト用意してなかったらstaticおじさんはコード書けなかったと思うし

そうだね。

> staticおじさんのコードはオブジェクト指向を有効的に活用した非常に優れたコードだと思いますよ

お前がそう思うのなら、そう思えば。そはどうでもいい。

で?
クラスを定義すればオブジェクト指向だとまだ主張するの?

論点ずらすなや

972 :デフォルトの名無しさん:2020/07/05(日) 13:42:50.97 ID:MQ9nuMmc.net
>>971
何が気に入らなくて僕に絡んでるのかわからないですが
クラスがオブジェクト指向の本質であることには変わりないですよ
クラスとはデータと処理をセットにして持つことができるものです
クラスを定義することこそがオブジェクト指向の本質です

973 :デフォルトの名無しさん:2020/07/05(日) 13:44:43.62 ID:MQ9nuMmc.net
責務ごとにオブジェクトをわけましょうなんていうのは
オブジェクト指向でプログラミングすることを前提にした設計論でしか無いです
クラスの存在こそがオブジェクト指向の本質です

974 :デフォルトの名無しさん:2020/07/05(日) 13:45:21.93 ID:JiRnWiGC.net
>>972

>>926をオブジェクト指向と認識している時点でオメーは間違ってるんだよ。

975 :デフォルトの名無しさん:2020/07/05(日) 13:47:18.05 ID:MQ9nuMmc.net
>>974
いいえ、君のほうが間違いです
Mainという名前にしてるのはpaizaではMainじゃないと動かないからですよ
その辺わかって絡んでますか? あまり僕を怒らせないほうが良いです

976 :デフォルトの名無しさん:2020/07/05(日) 13:47:27.85 ID:JiRnWiGC.net
>>972
何が気にいらないかって?
オブジェクト指向でも何でもねぇコードをオブジェクト指向と認識して今まで長ったらしい口論を続けてきたことだ。

クソみたいな時間だったな、オイ。

977 :デフォルトの名無しさん:2020/07/05(日) 13:52:06.41 ID:JiRnWiGC.net
>>975
まぁ、いいさ。これ以上は不毛だ。スレも終わるし。
俺は俺の思う正しいオブジェクト指向で今後も楽をさせてもらうよ。
そっちも、そっちの思うオブジェクト指向とやらを使い続けるがいい。

成果が出た方が正義だ。

978 :デフォルトの名無しさん:2020/07/05(日) 13:55:35.80 ID:h7Qz+vpg.net
オブジェクト指向だから髪型は自由なのさ

彡 ⌒ ミ
(´・ω・`) 不毛とかいうな!

979 :デフォルトの名無しさん:2020/07/05(日) 13:56:22.57 ID:MQ9nuMmc.net
ハゲに謝るべき

980 :デフォルトの名無しさん:2020/07/05(日) 13:56:24.62 ID:VS9zJ3bZ.net
よし
話を一度整理しよう

privateメソッドだからテストしないとか言ってるやつはキチガイ
早く死んでね

981 :デフォルトの名無しさん:2020/07/05(日) 14:06:22.83 ID:MQ9nuMmc.net
ナイスな整理と言わざるを得ない
議論もリファクタリング可能であることを如実に示した

982 :デフォルトの名無しさん:2020/07/05(日) 14:09:58.85 ID:MQ9nuMmc.net
>>976
僕のコードはオブジェクト指向ですよ
そこんとこよろしくですよ

オブジェクトをどう分けるかって話はありますよ
しかし、それとは独立してオブジェクトは存在するので
オブジェクトを定義できるクラスの存在そのものがオブジェクト指向の本質なわけです
だからオブジェクト指向言語にはクラスが存在します

生物学の類、目のようなものです、どう分類するかは副次的な話であって
分類できることこそが最も重要な事柄です

983 :デフォルトの名無しさん:2020/07/05(日) 14:18:27.81 ID:9F15TCk0.net
正直あの短さでOOかどうかと(スタティックでインスタンス化もないコードだが)言うのは
不毛だけどID:JiRnWiGCの組み込みおじさんのがOO感はあるよ。

で、staticで出されてもprivateのテストがどうかと言う話には全く寄与しないわけだが、
じゃあ逆に、>>805のチンコテストのfuncSとfuncBはどうやってテストするの?

パブリック経由で全パターンと言うことならこれでこの話はおしまい。
パブリック経由でやりましょう。

違うと言うなら具体的にコードでおながいします。

smallestを9じゃなくて8にしろとかいう苦情は受け付けますw

984 :デフォルトの名無しさん:2020/07/05(日) 14:23:34 ID:MQ9nuMmc.net
>>983
僕ならテストしないですね、全部書き直します
メソッドを行数で分割するようなことしてるからそういう下痢便コードができあがるんじゃないかと思いますよ

985 :デフォルトの名無しさん:2020/07/05(日) 14:24:31 ID:MQ9nuMmc.net
クラスにしてもメソッドにしても責務でわけないと
行数が50行超えたから分割しなければみたいなアホなことやってるのはアホですわ

986 :デフォルトの名無しさん:2020/07/05(日) 14:25:15 ID:JiRnWiGC.net
(組み込みおじさんじゃないんだけどな...組み込みもやるけど)

987 :デフォルトの名無しさん:2020/07/05(日) 14:26:22 ID:MQ9nuMmc.net
>>986
器用ですね、じゃあ僕との仲直りもすぐにできそうですね

988 :デフォルトの名無しさん:2020/07/05(日) 14:28:26 ID:9F15TCk0.net
>>984
書き直して決め打ちコピペにstaticなんだw
結局publicとprivateの違いはよくわかってないな。
まあ頑張れ。君とはこれまでだ。

>>986
組み込みおじさんって言ってたやんけ(言ってなかったか?)

989 :デフォルトの名無しさん:2020/07/05(日) 14:30:37 ID:MQ9nuMmc.net
>>988
staticにしたのは状態に依存してないからですね

990 :デフォルトの名無しさん:2020/07/05(日) 14:31:51 ID:9F15TCk0.net
下痢便君は10代後半から20代前半というところかなあ。

ウンコチンコのレベルと絡んでてもおじさんあんまり面白く無いんだよね。
自分でチンコテストのコードあげたけどw

でもコードあげたのは偉いと思うので頑張ってね。

991 :デフォルトの名無しさん:2020/07/05(日) 14:33:06 ID:JiRnWiGC.net
あー、組み込みおじさんにも解るように だよ。
俺自身、組み込みもやるからややこしいが、ずっと前に登場した組み込みおじさんとは別人だよ。

まぁ、慌てて書いたから余計な発言だったか。
もう、この際OOPの利点さえ感じていればなんでもいいことにするよ。
スレも少ないし、ヒートダウンしたし。

992 :デフォルトの名無しさん:2020/07/05(日) 14:33:34 ID:MQ9nuMmc.net
>>990
僕まだ小学生でちゅ

993 :デフォルトの名無しさん:2020/07/05(日) 14:35:03.91 ID:9F15TCk0.net
あー組み込みおじさん(固有名詞)が居たのね。一般名詞のつもりでした。
この板昨日からなので。

994 :デフォルトの名無しさん:2020/07/05(日) 14:35:40.42 ID:9F15TCk0.net
>>992
偉いねえ。

995 :デフォルトの名無しさん:2020/07/05(日) 14:37:40.20 ID:MQ9nuMmc.net
参照透明なメソッドだとテストしやすいしバグの混入も減らせるのでおすすめ!
間違っても>>805こんな下痢便分割しちゃダメ

996 :デフォルトの名無しさん:2020/07/05(日) 14:38:27.28 ID:9F15TCk0.net
しかし小学生の下痢便君とかと話ててもこっちは損するばかりだしなあ。
マジで。しかも下痢便君はましな方な可能性さえあるし。

予想以上だった、この板。マジやばい。ASP.NETのオブジェクトを使ってるなら
オブジェクト指向だし。

997 :デフォルトの名無しさん:2020/07/05(日) 14:38:41.11 ID:MQ9nuMmc.net
>>993
マジで!? ID:gS37C1rZ これ絶対君だと思ってた、言ってること薄っぺらいしアホだし

998 :デフォルトの名無しさん:2020/07/05(日) 14:42:18.59 ID:h7Qz+vpg.net
不毛

彡 ⌒ ミ
(´・ω・`)

999 :デフォルトの名無しさん:2020/07/05(日) 14:43:23.60 ID:9F15TCk0.net
>>997
マジで某アメリカの誰でも知ってるとこの中の人だよ。
日本人あんまり居ないので、これ以上はやばいからどこだか
下痢便君に教えるわけが無いけど。

インデントとか言ってたの君だっけ?

そんなくだらない(しかも的外れな)揚げ足取りじゃなくて、
君のコード、根本的なとこに問題あるんだけど、わからない人に
わかれと言ってもわからないだろうからなあ。

ちゃんとOOをやったらわかるかも。頑張ってね。下痢便君w

1000 :デフォルトの名無しさん:2020/07/05(日) 14:43:28.02 ID:MQ9nuMmc.net
>>998
ハゲて頑張っておられる方にお詫び申し上げます

1001 :2ch.net投稿限界:Over 1000 Thread
2ch.netからのレス数が1000に到達しました。

総レス数 1001
317 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver.24052200