カプセル化(英語: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)
探検
カプセル化の有害性、オブジェクト指向は愚かな考え
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2020/06/18(木) 23:47:36.69ID:l/2SQUll114デフォルトの名無しさん
2020/06/24(水) 22:55:53.79ID:evfa9tXu そもそもprivateっていうのはコミュニケーションの道具で
privateって書いていなければ、好き放題アクセスしてOKという意味に
捉えられるかもしれないわけだ。
コメントの高度版なのだからコメントなくてもできるのは当たり前
だがそうすると修正が難しくなる
俺が作るなら〜っていうのはコミュニケーションが
必要ないから言える話
privateって書いていなければ、好き放題アクセスしてOKという意味に
捉えられるかもしれないわけだ。
コメントの高度版なのだからコメントなくてもできるのは当たり前
だがそうすると修正が難しくなる
俺が作るなら〜っていうのはコミュニケーションが
必要ないから言える話
115デフォルトの名無しさん
2020/06/24(水) 22:58:49.48ID:z1f+Mb2g >>112
まぁ、そうだな。
ただ、面白いのが...
頭のいい人がOOPに漬かると、余裕ができた分、コンピューターの仕組みにとらわれずエンドユーザーの事を全力で配慮した品質の高い製品を作れるようになる。
まぁ、そうだな。
ただ、面白いのが...
頭のいい人がOOPに漬かると、余裕ができた分、コンピューターの仕組みにとらわれずエンドユーザーの事を全力で配慮した品質の高い製品を作れるようになる。
116デフォルトの名無しさん
2020/06/24(水) 22:59:48.33ID:z1f+Mb2g アンカまた間違えた...
117デフォルトの名無しさん
2020/06/24(水) 23:00:40.93ID:z1f+Mb2g 間違えてなかった。もうダメだ...
118デフォルトの名無しさん
2020/06/24(水) 23:26:13.24ID:MQA513Hf >>113
構造体でまるっと渡してやるよ
構造体でまるっと渡してやるよ
119デフォルトの名無しさん
2020/06/24(水) 23:27:50.80ID:MQA513Hf120デフォルトの名無しさん
2020/06/24(水) 23:31:43.79ID:MQA513Hf そもそもさ
クラスで状態を保持するソースってさ
実装全部見て
何やるとどう状態遷移が起こるのか把握しないと使えないじゃん
これが最高にダルイ
もう年取ったしこんなの付き合ってらんない面倒臭くて
クラスで状態を保持するソースってさ
実装全部見て
何やるとどう状態遷移が起こるのか把握しないと使えないじゃん
これが最高にダルイ
もう年取ったしこんなの付き合ってらんない面倒臭くて
121デフォルトの名無しさん
2020/06/24(水) 23:32:23.15ID:fkg3GZzF 単なるモジュール切り離しのための技術の一つだよ。
バカが騒ぎまくったせいでクソみたいなインターフェイスによる切り離しで
逆に見通しが悪くなることが多くなった。
細かい粒度で使うような技術じゃない。
バカが騒ぎまくったせいでクソみたいなインターフェイスによる切り離しで
逆に見通しが悪くなることが多くなった。
細かい粒度で使うような技術じゃない。
122デフォルトの名無しさん
2020/06/24(水) 23:41:46.40ID:MQA513Hf >>121
いや、単純に面倒臭いだけでメリット皆無じゃん
いや、単純に面倒臭いだけでメリット皆無じゃん
123デフォルトの名無しさん
2020/06/25(木) 00:13:01.48ID:JeYxH76v 内部に状態変数をもたれたらグローバル変数の比ではないほど厄介。
単体テストやデバッグが壮大なことになる。
単体テストやデバッグが壮大なことになる。
124デフォルトの名無しさん
2020/06/25(木) 00:16:04.75ID:JeYxH76v 「状態によって挙動が変わる」ものが何十個も何百個も集まったら誰も把握しきれない。誰も制御しきれない。
125デフォルトの名無しさん
2020/06/25(木) 01:13:10.51ID:h5MGZkZK126デフォルトの名無しさん
2020/06/25(木) 01:41:45.27ID:Q34w5rfS 内包してる初期化フラグ一つで
全く同じ入力に対して全く異なる出力が出てくるんだから
こいつは厄介だよ
勘がいいやつはこれだけでこの仕組みを使わない
全く同じ入力に対して全く異なる出力が出てくるんだから
こいつは厄介だよ
勘がいいやつはこれだけでこの仕組みを使わない
127デフォルトの名無しさん
2020/06/25(木) 03:09:24.52ID:9YSX2wtH >>124
だからオブジェクト指向で小さくするんだよね
だからオブジェクト指向で小さくするんだよね
128デフォルトの名無しさん
2020/06/25(木) 03:13:43.10ID:AD4h9H61 >>110 君頭悪いねってよく言われない?
129デフォルトの名無しさん
2020/06/25(木) 03:15:57.10ID:9YSX2wtH >>128
言われない。むしろお前のほうが言われてるだろ。
言われない。むしろお前のほうが言われてるだろ。
130デフォルトの名無しさん
2020/06/25(木) 04:09:57.03ID:3STWDldz お前ら頭悪いね
131デフォルトの名無しさん
2020/06/25(木) 05:35:58.45ID:AD4h9H61 レス番まで指摘されても自分のおかしい発言に気づけないとはいとあはれ
132デフォルトの名無しさん
2020/06/25(木) 05:40:21.51ID:hNcIaCHg いいぞ、もっとやれ
133デフォルトの名無しさん
2020/06/25(木) 07:10:48.49ID:MncJLzSh 内部を知る必要ない。インターフェースだけ守れ
134デフォルトの名無しさん
2020/06/25(木) 07:22:24.62ID:/bWSJldt 彡 ⌒ ミ
(´・ω・`) 頭がなんだって?
(´・ω・`) 頭がなんだって?
135デフォルトの名無しさん
2020/06/25(木) 07:30:13.69ID:p+gLKGcc >>122
めんどくさくて新しい(もう20年以上前からメジャーではあるが...)考え方についていけません、てだけだろw
お前が懸念している内部の状態遷移が見えないというのは、見えなくていいように作り、見えなくていい部分だけを隠すんだよ。
お前の大好きな従来の手続き型だって、下手に作れば手続きを呼び出す順序や渡すべきデータの構造や内容が訳分からない複雑なものになるだろう。
単に自分の知ってる手法では良い設計を知っていて問題点を避けられる、よく知らない手法は問題を回避する方法がわからなくて問題のある手法と思えてしまう、ただそれだけのこと。
めんどくさくて新しい(もう20年以上前からメジャーではあるが...)考え方についていけません、てだけだろw
お前が懸念している内部の状態遷移が見えないというのは、見えなくていいように作り、見えなくていい部分だけを隠すんだよ。
お前の大好きな従来の手続き型だって、下手に作れば手続きを呼び出す順序や渡すべきデータの構造や内容が訳分からない複雑なものになるだろう。
単に自分の知ってる手法では良い設計を知っていて問題点を避けられる、よく知らない手法は問題を回避する方法がわからなくて問題のある手法と思えてしまう、ただそれだけのこと。
136デフォルトの名無しさん
2020/06/25(木) 07:32:40.30ID:U43KJZDw クラスの状態はクラスが知ってれば良い
という思想なんじゃねえの?
オブジェクト指向は?
という思想なんじゃねえの?
オブジェクト指向は?
137デフォルトの名無しさん
2020/06/25(木) 07:35:44.39ID:Q34w5rfS >>136
テストするんですが〜
テストするんですが〜
138デフォルトの名無しさん
2020/06/25(木) 07:53:57.86ID:Q34w5rfS >>135
違うだろ
内部の状態が見えないのにテストなんかできないだろ
そのクラス使ってある限りそいつの状態次第で色んな動作しちまうんだから
はっきり言ってクラスは欠陥製品
特に内部に状態を保持するような使い方は害悪
違うだろ
内部の状態が見えないのにテストなんかできないだろ
そのクラス使ってある限りそいつの状態次第で色んな動作しちまうんだから
はっきり言ってクラスは欠陥製品
特に内部に状態を保持するような使い方は害悪
139デフォルトの名無しさん
2020/06/25(木) 08:19:04.16ID:p+gLKGcc >>138
お前はオブジェクトの状態として、外部に影響を与える外部仕様の状態と、外部に影響を与えない内部仕様としての状態を混同してないか?
文字列のオブジェクトが文字列"abcd"を持つとして、それは外部に影響を与えるものだから、privateのメンバとして保持されていようがテストケースとしてそれを与えて状態を設定してテストすればいい。
一方、その文字列がどういう実装で保持されているか、ヒープなのか固定配列なのか、参照カウンタやさらに複雑な仕組みを使っているのかといった内部仕様的な状態は、このクラスを他と組み合わせてテストする段階ではテストする必要がない。こういう部分は、先にクラス単体のテストで保証しておけば良い。
そういう切り分けができない作りになっているなら、それは設計が悪い。
お前はオブジェクトの状態として、外部に影響を与える外部仕様の状態と、外部に影響を与えない内部仕様としての状態を混同してないか?
文字列のオブジェクトが文字列"abcd"を持つとして、それは外部に影響を与えるものだから、privateのメンバとして保持されていようがテストケースとしてそれを与えて状態を設定してテストすればいい。
一方、その文字列がどういう実装で保持されているか、ヒープなのか固定配列なのか、参照カウンタやさらに複雑な仕組みを使っているのかといった内部仕様的な状態は、このクラスを他と組み合わせてテストする段階ではテストする必要がない。こういう部分は、先にクラス単体のテストで保証しておけば良い。
そういう切り分けができない作りになっているなら、それは設計が悪い。
140デフォルトの名無しさん
2020/06/25(木) 08:42:04.56ID:Q34w5rfS141デフォルトの名無しさん
2020/06/25(木) 08:57:56.71ID:rghIsJSV >>122
めんどくさいのはその通り。
テスト駆動開発の本とか読んでどういうオブジェクトを引数にすると
テストしやすいかが理解できてくるとありがたさがわかってくる。
オブジェクト設計とか言い出す馬鹿は無視しろ。
めんどくさいのはその通り。
テスト駆動開発の本とか読んでどういうオブジェクトを引数にすると
テストしやすいかが理解できてくるとありがたさがわかってくる。
オブジェクト設計とか言い出す馬鹿は無視しろ。
142デフォルトの名無しさん
2020/06/25(木) 08:58:07.22ID:XTsRyKlX >>120
> そもそもさ
> クラスで状態を保持するソースってさ
> 実装全部見て
> 何やるとどう状態遷移が起こるのか把握しないと使えないじゃん
> これが最高にダルイ
> もう年取ったしこんなの付き合ってらんない面倒臭くて
だ、か、ら、
それを解決するためのオブジェクト指向だ つってんだろ!
クラスをオブジェクト指向も意識せずに、ただただ構造体みたいに実装して使うから、そうなるんだよ。
> そもそもさ
> クラスで状態を保持するソースってさ
> 実装全部見て
> 何やるとどう状態遷移が起こるのか把握しないと使えないじゃん
> これが最高にダルイ
> もう年取ったしこんなの付き合ってらんない面倒臭くて
だ、か、ら、
それを解決するためのオブジェクト指向だ つってんだろ!
クラスをオブジェクト指向も意識せずに、ただただ構造体みたいに実装して使うから、そうなるんだよ。
143デフォルトの名無しさん
2020/06/25(木) 09:10:36.57ID:p+gLKGcc >>140
どのクラスを指して言ってるのか知らないが、それはそのクラスの仕様自体の複雑さかお前の理解不足が原因で正しい挙動が分かってないとか未定義動作をさせているとかでないの?
状態を保持するのが問題なのではなく、知っておくべき状態、情報を知らずに上手くいかないのをオブジェクト指向のせいにしているだけのように見えるぞ。
どのクラスを指して言ってるのか知らないが、それはそのクラスの仕様自体の複雑さかお前の理解不足が原因で正しい挙動が分かってないとか未定義動作をさせているとかでないの?
状態を保持するのが問題なのではなく、知っておくべき状態、情報を知らずに上手くいかないのをオブジェクト指向のせいにしているだけのように見えるぞ。
144デフォルトの名無しさん
2020/06/25(木) 09:17:11.38ID:rghIsJSV 状態をできるかぎり持たない方がいいってのはその通り。
ただ通信ソケットみたいなもの実装しようとすればどうしても状態を持つわな。
コネクション張るオーバーヘッドが小さくない時点で、性能出そうと思えば状態をもつしかないので。
ただ通信ソケットみたいなもの実装しようとすればどうしても状態を持つわな。
コネクション張るオーバーヘッドが小さくない時点で、性能出そうと思えば状態をもつしかないので。
145デフォルトの名無しさん
2020/06/25(木) 09:21:43.95ID:H2Spozu7 オブジェクト指向って設計手法であると同時に
責任の切り分け手法でもあるんだよね 別の共同体(無償で手伝う気なしって意味で)
と作業する場合は必須でしょ
責任の切り分け手法でもあるんだよね 別の共同体(無償で手伝う気なしって意味で)
と作業する場合は必須でしょ
146デフォルトの名無しさん
2020/06/25(木) 10:04:43.33ID:Q34w5rfS147デフォルトの名無しさん
2020/06/25(木) 10:09:16.30ID:XTsRyKlX148デフォルトの名無しさん
2020/06/25(木) 10:09:53.75ID:Q34w5rfS >>145
いやー、クラス内で状態を保持するクラスが大量に呼ばれてて
本来はそれらの全ケースを網羅する必要があるが作業者の裁量で省略されてる状態じゃないっすか?
切り分けじゃないッスよね?
クラスAとクラスBがそれぞれチェックされててもそれらが合わさったことでバグが発生してる可能性もあるンスから
テストはちゃんとやるのであれば状態全網羅でしょう
ぶっちゃけ無理っすわ
状態を保持をやった時点で地獄行き
覚えた?確定事項よ
いやー、クラス内で状態を保持するクラスが大量に呼ばれてて
本来はそれらの全ケースを網羅する必要があるが作業者の裁量で省略されてる状態じゃないっすか?
切り分けじゃないッスよね?
クラスAとクラスBがそれぞれチェックされててもそれらが合わさったことでバグが発生してる可能性もあるンスから
テストはちゃんとやるのであれば状態全網羅でしょう
ぶっちゃけ無理っすわ
状態を保持をやった時点で地獄行き
覚えた?確定事項よ
149デフォルトの名無しさん
2020/06/25(木) 10:11:45.88ID:Q34w5rfS >>147
グローバル変数さえなければ入力に対してぜってー決まった出力しか出ないのに何が問題出るの?
頭おかしいんじゃない?
○○構造のとき作りにくいってのはあると思うけど
わかりやすさでこれ以上はないよ
グローバル変数さえなければ入力に対してぜってー決まった出力しか出ないのに何が問題出るの?
頭おかしいんじゃない?
○○構造のとき作りにくいってのはあると思うけど
わかりやすさでこれ以上はないよ
150デフォルトの名無しさん
2020/06/25(木) 10:18:17.66ID:H2Spozu7 >>148
クラスAとクラスBがそれぞれチェックされててもそれらが合わさったことでバグが発生してる
可能性もあるンスから
こうなったときにAもBも直す必要がないでしょってこと どちらかを直すかは共同体
同士のパワーバランスで決まるんだけどねw そこはまあ大人になるしかない
クラスAとクラスBがそれぞれチェックされててもそれらが合わさったことでバグが発生してる
可能性もあるンスから
こうなったときにAもBも直す必要がないでしょってこと どちらかを直すかは共同体
同士のパワーバランスで決まるんだけどねw そこはまあ大人になるしかない
151デフォルトの名無しさん
2020/06/25(木) 10:20:16.04ID:XTsRyKlX >>148
> >>145
> いやー、クラス内で状態を保持するクラスが大量に呼ばれてて
> 本来はそれらの全ケースを網羅する必要があるが作業者の裁量で省略されてる状態じゃないっすか?
何いってるんだ、こいつ。
クラスの基本的な仕組みから理解していないのか。
状態はインスタンスの数だけ持つことになるけど、呼ばれるロジックは一つだよ?
一つのロジックだけをテストすればいいのに、君はstatic化することで、わざわざ一つの状態につき一つのロジックを用意しようとしている。
つまり、君は一つのインスタンスにつき、一つのロジックを記述することで膨大な数のテストをしなければいけない状況を自分で作っている訳だ。
お前のやり方の方が無理ですわ。
> >>145
> いやー、クラス内で状態を保持するクラスが大量に呼ばれてて
> 本来はそれらの全ケースを網羅する必要があるが作業者の裁量で省略されてる状態じゃないっすか?
何いってるんだ、こいつ。
クラスの基本的な仕組みから理解していないのか。
状態はインスタンスの数だけ持つことになるけど、呼ばれるロジックは一つだよ?
一つのロジックだけをテストすればいいのに、君はstatic化することで、わざわざ一つの状態につき一つのロジックを用意しようとしている。
つまり、君は一つのインスタンスにつき、一つのロジックを記述することで膨大な数のテストをしなければいけない状況を自分で作っている訳だ。
お前のやり方の方が無理ですわ。
152デフォルトの名無しさん
2020/06/25(木) 10:27:24.45ID:Q34w5rfS153デフォルトの名無しさん
2020/06/25(木) 10:28:11.21ID:Q34w5rfS >>151
バカの相手はできんわ
バカの相手はできんわ
154デフォルトの名無しさん
2020/06/25(木) 10:29:59.55ID:XTsRyKlX しかも、1つの状態につき、一つのロジックを書くってことは...似たようなクラスが10個必要になったら、そのクラスのロジックを10回、コピペするわけだ。
で、その後、ロジックを修正することになった場合...10回、コードを書き直すの?
そっちの方が無理ですわ。
いっそのこと、staticにしないで、10個の状態が1個のロジックを参照するようにしておけば、ロジックの修正は一回で済む。
そっちの方が断然、楽だね。
で、その後、ロジックを修正することになった場合...10回、コードを書き直すの?
そっちの方が無理ですわ。
いっそのこと、staticにしないで、10個の状態が1個のロジックを参照するようにしておけば、ロジックの修正は一回で済む。
そっちの方が断然、楽だね。
155デフォルトの名無しさん
2020/06/25(木) 10:31:50.71ID:XTsRyKlX156デフォルトの名無しさん
2020/06/25(木) 10:38:02.77ID:H2Spozu7 >>152
もしかしてインスタンスの意義がわかってないのか?
他でも使ってるなら安全牌はクラスC用のクラスAクラスBの複製だけどw
まさしくこの状態を作りたいからクラスAクラスBのインスタンスをつかうんだけどな
もしかしてインスタンスの意義がわかってないのか?
他でも使ってるなら安全牌はクラスC用のクラスAクラスBの複製だけどw
まさしくこの状態を作りたいからクラスAクラスBのインスタンスをつかうんだけどな
157デフォルトの名無しさん
2020/06/25(木) 10:41:15.81ID:Q34w5rfS >>156
え?何言ってるの?
え?何言ってるの?
158デフォルトの名無しさん
2020/06/25(木) 11:34:09.20ID:emOdy//g クラス使わない人ってどうするんだろ
構造体?
全部インタプリタみたいな感じ?
構造体?
全部インタプリタみたいな感じ?
159デフォルトの名無しさん
2020/06/25(木) 11:40:28.84ID:h5MGZkZK スレ主の愚痴はオブジェクト指向かどうかと関係ない
単に設計やテストのやり方を知らないだけ
単に設計やテストのやり方を知らないだけ
160デフォルトの名無しさん
2020/06/25(木) 12:22:45.24ID:9YSX2wtH >>138
> 内部の状態が見えないのにテストなんかできないだろ
ん?全部publicにしておけばテストできるって話じゃないの?
もしくはprivateであっても、privateを読み書きできる機能があればテストできるでしょ?
> 内部の状態が見えないのにテストなんかできないだろ
ん?全部publicにしておけばテストできるって話じゃないの?
もしくはprivateであっても、privateを読み書きできる機能があればテストできるでしょ?
161デフォルトの名無しさん
2020/06/25(木) 12:25:19.77ID:XTsRyKlX クラス使っても、staticにするとか訳のわからない事を言い出すし、根本的にオブジェクト指向を理解していない人達が愚痴っているだけだよな。
むしろ、何でもstaticにするのはC言語やC++言語から入った初心者なら誰もがやる失敗。
そんな初心者の失敗をいい歳したおっさんが、オブジェクト指向を批判しながらstaticを勧めるから駄目なんだよ。
我々からすれば、俺らの黒歴史時代の経験を何で上から目線で偉そうに語っているんだ?って感じだね。
流石に、上から目線で語る程、俺の黒歴史は酷くなかったぞ。
むしろ、何でもstaticにするのはC言語やC++言語から入った初心者なら誰もがやる失敗。
そんな初心者の失敗をいい歳したおっさんが、オブジェクト指向を批判しながらstaticを勧めるから駄目なんだよ。
我々からすれば、俺らの黒歴史時代の経験を何で上から目線で偉そうに語っているんだ?って感じだね。
流石に、上から目線で語る程、俺の黒歴史は酷くなかったぞ。
162デフォルトの名無しさん
2020/06/25(木) 12:43:43.74ID:KZb+gCmD カプセル化が要らない、と言うのなら、
誰もがデータを読み書きできる状態でどうやってアトミック処理を保証するのか
を教えて欲しいな。
もしかしたら大発明かも。
誰もがデータを読み書きできる状態でどうやってアトミック処理を保証するのか
を教えて欲しいな。
もしかしたら大発明かも。
163デフォルトの名無しさん
2020/06/25(木) 12:49:36.79ID:Q34w5rfS >>160
内包されるよりいくらかCool
ただ、そこまでpublicにできるならstaticにしてほしい
実行時にstatesがnoneでないと正しく動かないんですよこのメソッドって
言われても知らねーよそんなのって感じ
じゃあstatesはどうやってnoneにするんだべって
俺に調べさせるのやめてもらっていい?
もっと言えばstaticにすればそんなことないじゃん?
内包されるよりいくらかCool
ただ、そこまでpublicにできるならstaticにしてほしい
実行時にstatesがnoneでないと正しく動かないんですよこのメソッドって
言われても知らねーよそんなのって感じ
じゃあstatesはどうやってnoneにするんだべって
俺に調べさせるのやめてもらっていい?
もっと言えばstaticにすればそんなことないじゃん?
164デフォルトの名無しさん
2020/06/25(木) 13:01:46.41ID:9YSX2wtH >>163
内包したらテストできないだろ?
内包したらテストできないだろ?
165デフォルトの名無しさん
2020/06/25(木) 13:06:39.24ID:XTsRyKlX そもそも、クラスって正常に動く前提で使うものであって、なんで、クラスを使う側がクラス内部動作をテストしないといけないのかわからん。
クラスのテストは、クラスを実装する側の責任だろうに。
...というツッコミをそろそろしてもいいかな?
クラスのテストは、クラスを実装する側の責任だろうに。
...というツッコミをそろそろしてもいいかな?
166デフォルトの名無しさん
2020/06/25(木) 13:17:56.03ID:p+gLKGcc167デフォルトの名無しさん
2020/06/25(木) 13:23:03.90ID:p+gLKGcc >>163
そのstatesがnoneでなければならないという仕様は、そのクラスの使い方として外部に明示すべき仕様だろう。そそういう情報が示されていないならドキュメントの不備だし、そういう仕様が公開されていても外部からstatesの値を参照または設定できないのなら設計の不備だろう。
延々と繰り返し指摘しているように、それはオブジェクト指向そのものの問題でなく正しく設計、運用がされていない問題だろう。
そのstatesがnoneでなければならないという仕様は、そのクラスの使い方として外部に明示すべき仕様だろう。そそういう情報が示されていないならドキュメントの不備だし、そういう仕様が公開されていても外部からstatesの値を参照または設定できないのなら設計の不備だろう。
延々と繰り返し指摘しているように、それはオブジェクト指向そのものの問題でなく正しく設計、運用がされていない問題だろう。
168デフォルトの名無しさん
2020/06/25(木) 13:29:58.05ID:XTsRyKlX >>166
あっ、ほんとだ。
あっ、ほんとだ。
169デフォルトの名無しさん
2020/06/25(木) 15:28:55.17ID:xmAi/11M カプセル化の最大のメリットは中で何をしているかどうなっているかは気にせずに
外からは引数を与えると仕様通りの値が戻ってくるというところだよね?
外からは引数を与えると仕様通りの値が戻ってくるというところだよね?
170デフォルトの名無しさん
2020/06/25(木) 16:47:53.33ID:CiEXbKUP グローバル変数に格納されている値で関数の挙動が変わるより悲惨だぞ。
グローバル変数が見えないんだから。
グローバル変数が見えないんだから。
171デフォルトの名無しさん
2020/06/25(木) 16:52:12.11ID:BM3o+zlw ん?
172デフォルトの名無しさん
2020/06/25(木) 17:00:47.93ID:XTsRyKlX ID変えて振り出しに戻るって奴?
173デフォルトの名無しさん
2020/06/25(木) 17:03:53.35ID:p+gLKGcc ここまで話の通じない奴だと思うと相手するのがバカらしくなってくるね。まさに徒労という言葉がふさわしい。
174デフォルトの名無しさん
2020/06/25(木) 19:27:44.23ID:RQlIhWFK175デフォルトの名無しさん
2020/06/25(木) 19:35:56.42ID:oGWS7APt 全部staticってどうするんだろう
メソッドの引数すごいことになってそう
メソッドの引数すごいことになってそう
176デフォルトの名無しさん
2020/06/25(木) 20:15:30.81ID:LQ8CyLE7 オブジェクト指向のあらゆる用語が
ノムリッシュみたいになってると思う
JavaScriptが発展して、クラス名と同じ名前の
ファイル名にしなくていい事が分かったわけじゃん
それどころかクラスすら必要なしでオブジェクトが作れる事が
分かったわけじゃん
クラス名と同じ名前のコンストラクタなん定義しなくても
オブジェクトが作れる事が分かったじゃん
オブジェクトとは詰まるところ連想配列と大して違いが
ないキーと値で構成された入れ物でしかない事がわかった。
この「連想配列と違いがない」というシンプルな真実が
どれだけありがたいことか
クラスを始めとする様々なルールは
ソフトウェア設計上の重要な概念かと思ってたら
単なるJavaの変な言語仕様でしかなかったわけだ。
変数を「フィールド」
関数を「メソッド」
関数を「コンストラクタ」
こう言い換える必要がどこにある?
こんなノムリッシュなバズワードに
今までどれだけ煙にまかれて
シンプルな真実が見えなくなってたことか
ノムリッシュみたいになってると思う
JavaScriptが発展して、クラス名と同じ名前の
ファイル名にしなくていい事が分かったわけじゃん
それどころかクラスすら必要なしでオブジェクトが作れる事が
分かったわけじゃん
クラス名と同じ名前のコンストラクタなん定義しなくても
オブジェクトが作れる事が分かったじゃん
オブジェクトとは詰まるところ連想配列と大して違いが
ないキーと値で構成された入れ物でしかない事がわかった。
この「連想配列と違いがない」というシンプルな真実が
どれだけありがたいことか
クラスを始めとする様々なルールは
ソフトウェア設計上の重要な概念かと思ってたら
単なるJavaの変な言語仕様でしかなかったわけだ。
変数を「フィールド」
関数を「メソッド」
関数を「コンストラクタ」
こう言い換える必要がどこにある?
こんなノムリッシュなバズワードに
今までどれだけ煙にまかれて
シンプルな真実が見えなくなってたことか
177デフォルトの名無しさん
2020/06/25(木) 20:22:00.90ID:9YSX2wtH >>176
3行でまとめて
3行でまとめて
178デフォルトの名無しさん
2020/06/25(木) 20:24:37.53ID:LQ8CyLE7 それに加えて
「継承」「抽象クラス」「オーバーライド」
「カプセル化」「ポリモーフィズム」
こんな用語は必ずしもやるのが正しいものではないし
やればやるほどシステムを必要以上に複雑にして
邪魔にしかならないものばかり
それなのに
「オブジェクト指向の本質は継承とカプセル化とポリモーフィズムだ。」
なんて馬鹿げた事を言い始めるノムリッシュな奴が出始めて
JavaScriptならオブジェクトの内部に
別のオブジェクトを入れるという一瞬の操作で
終わるものを「委譲」など余計な用語を定義して
わざわざ定義しなくてもいいようなくだらない
小難しそうな用語だらけになって
「お前はooの概念を正しく理解してない」
という偉そうな批判がどれだけ飛び交うことか
「継承」「抽象クラス」「オーバーライド」
「カプセル化」「ポリモーフィズム」
こんな用語は必ずしもやるのが正しいものではないし
やればやるほどシステムを必要以上に複雑にして
邪魔にしかならないものばかり
それなのに
「オブジェクト指向の本質は継承とカプセル化とポリモーフィズムだ。」
なんて馬鹿げた事を言い始めるノムリッシュな奴が出始めて
JavaScriptならオブジェクトの内部に
別のオブジェクトを入れるという一瞬の操作で
終わるものを「委譲」など余計な用語を定義して
わざわざ定義しなくてもいいようなくだらない
小難しそうな用語だらけになって
「お前はooの概念を正しく理解してない」
という偉そうな批判がどれだけ飛び交うことか
179デフォルトの名無しさん
2020/06/25(木) 20:31:34.09ID:LQ8CyLE7 webフレームワークの
MVCの「モデル」ってそんなに重要ものなのか?
「モデル」なんてものがSQLやDBMSを隠蔽して
何がありがたいと言うのか
むしろ隠蔽されて困ることの方が多いんじゃないか?
何故一度テーブル作成時にて定義した
大量の列定義を
またモデル層のフィールド定義で2度もやり直さないといけないのか
要らないだろ。「モデル」なんて
最近は従来軽視されてきたクライアントサイドJavaScriptの
方がよっぽど重要なことが分かってきて
ReactやVueのようなクライアントサイドフレームワークが
重要視されてるわけじゃん
「オブジェクト指向」って結局何がありがたいのよ?
MVCの「モデル」ってそんなに重要ものなのか?
「モデル」なんてものがSQLやDBMSを隠蔽して
何がありがたいと言うのか
むしろ隠蔽されて困ることの方が多いんじゃないか?
何故一度テーブル作成時にて定義した
大量の列定義を
またモデル層のフィールド定義で2度もやり直さないといけないのか
要らないだろ。「モデル」なんて
最近は従来軽視されてきたクライアントサイドJavaScriptの
方がよっぽど重要なことが分かってきて
ReactやVueのようなクライアントサイドフレームワークが
重要視されてるわけじゃん
「オブジェクト指向」って結局何がありがたいのよ?
180デフォルトの名無しさん
2020/06/25(木) 21:03:02.32ID:9YSX2wtH 1行でまとめて
181デフォルトの名無しさん
2020/06/25(木) 21:03:32.44ID:9YSX2wtH > 「オブジェクト指向」って結局何がありがたいのよ?
多くの人で作業分担し、協力してプログラムを作れる所
多くの人で作業分担し、協力してプログラムを作れる所
182デフォルトの名無しさん
2020/06/25(木) 21:03:50.52ID:9YSX2wtH ReactやVueはオブジェクト指向
183デフォルトの名無しさん
2020/06/25(木) 21:03:50.90ID:lu0UaGfG184デフォルトの名無しさん
2020/06/25(木) 21:04:45.08ID:9YSX2wtH185デフォルトの名無しさん
2020/06/25(木) 21:05:53.76ID:lu0UaGfG >>180
抽象化を理解できないかわいそうな子
抽象化を理解できないかわいそうな子
186デフォルトの名無しさん
2020/06/25(木) 21:09:21.00ID:9YSX2wtH187デフォルトの名無しさん
2020/06/25(木) 21:17:15.89ID:lu0UaGfG188デフォルトの名無しさん
2020/06/25(木) 21:43:56.18ID:9YSX2wtH だから読んでないと言ってるw
189デフォルトの名無しさん
2020/06/26(金) 02:54:16.76ID:uM2i3sYA 関数化したりクラス化したらプログラムが高速化したんだけどGCが発生するタイミングが細かくなったってことでええんか?
190デフォルトの名無しさん
2020/06/26(金) 07:35:03.68ID:eLfJJdHb オブジェクト指向は整理術
棚なんて要らん棚があるから余計な物も管理する羽目になると床置する人が現実に居るのと同じ
棚なんて要らん棚があるから余計な物も管理する羽目になると床置する人が現実に居るのと同じ
191デフォルトの名無しさん
2020/06/26(金) 08:53:43.63ID:crXMwmqp まああまりに糞な抽象化だともう全部publicでレコードとして扱えやとは思うな。
抽象化を万能なものと思い込みすぎな馬鹿が多すぎるからオブジェクト指向に対する誤解が生まれる。
抽象化を万能なものと思い込みすぎな馬鹿が多すぎるからオブジェクト指向に対する誤解が生まれる。
192デフォルトの名無しさん
2020/06/26(金) 09:44:19.22ID:8zz5Zpvs っていうか抽象化ってどんな仕様のどの部分を一括に扱ってるのか?
ドキュメントがないと最悪
ここの仕様は特殊だからこれとは別にしないとなって話ができない
ドキュメント書かないなら抽象化するな
害悪でしかない
ドキュメントがないと最悪
ここの仕様は特殊だからこれとは別にしないとなって話ができない
ドキュメント書かないなら抽象化するな
害悪でしかない
193デフォルトの名無しさん
2020/06/26(金) 09:50:43.03ID:Op8/e6Io >>190
直置きはダメだが
ほとんどの場合「棚をしまう為の棚」
「それをしまう為の棚、それをしまうための棚…」
ってなってる
で、「ハサミ使いたいんだけどどこにあったっけ?」
って探すのに非常に苦労する。
見つけやすくするための棚だったはずなのに。
それどころか
棚「ハサミは内部で使うから自分で使わなくていいです。
『切る 』という目的だけに集中して、そう命令してください」
と、棚に言われる。
しかし切られた結果を見ると自分が欲しかった結果と微妙に
違うことがよくある。
だから「もう俺が直接切るから、いいからハサミをよこせ」
っていう話になる。
あと抽象化については
「これは抽象的な棚なので中には何も入っていません。
私を参考にした具体的な棚が何処かにあると思うのでそれを
探してください。」となる。
じゃあ「具体的な棚って一体どれだ?なんか長い名前の棚が
やたら沢山あるけどどの棚から探せばいいんだ??」
となる
直置きはダメだが
ほとんどの場合「棚をしまう為の棚」
「それをしまう為の棚、それをしまうための棚…」
ってなってる
で、「ハサミ使いたいんだけどどこにあったっけ?」
って探すのに非常に苦労する。
見つけやすくするための棚だったはずなのに。
それどころか
棚「ハサミは内部で使うから自分で使わなくていいです。
『切る 』という目的だけに集中して、そう命令してください」
と、棚に言われる。
しかし切られた結果を見ると自分が欲しかった結果と微妙に
違うことがよくある。
だから「もう俺が直接切るから、いいからハサミをよこせ」
っていう話になる。
あと抽象化については
「これは抽象的な棚なので中には何も入っていません。
私を参考にした具体的な棚が何処かにあると思うのでそれを
探してください。」となる。
じゃあ「具体的な棚って一体どれだ?なんか長い名前の棚が
やたら沢山あるけどどの棚から探せばいいんだ??」
となる
194デフォルトの名無しさん
2020/06/26(金) 09:55:00.00ID:50iMo9Ym195デフォルトの名無しさん
2020/06/26(金) 09:55:48.09ID:50iMo9Ym 具体的に何のことを言ってるのか
考えなきゃならんようなたとえ話に価値はねーからな
説明が下手すぎる
考えなきゃならんようなたとえ話に価値はねーからな
説明が下手すぎる
196デフォルトの名無しさん
2020/06/26(金) 10:13:27.50ID:wYfFflLL >>193
整理が下手なやつの例をあげて、だから整理はすべきでないと言ったって意味がないだろう。
整理が下手なやつの例をあげて、だから整理はすべきでないと言ったって意味がないだろう。
197デフォルトの名無しさん
2020/06/26(金) 10:36:41.37ID:klgKDCEw このスレにstaticおじさん、絶対沸いてるだろ。
198デフォルトの名無しさん
2020/06/26(金) 10:41:42.69ID:s43csjES199デフォルトの名無しさん
2020/06/26(金) 10:42:57.59ID:8zz5Zpvs200デフォルトの名無しさん
2020/06/26(金) 10:54:38.35ID:crXMwmqp >>198
アルゴリズムレイヤーでアクセスを無駄に禁止するようなクラスは有害でしかない。
適切なpublic具合というものがある。
例えばc++のstd::vectorなんかはかなりオープンアクセスなクラスだがあれが適切なんだよ。
でもって馬鹿に適切なアクセス制御なんて無理ってこと。
変に細かくするな。
馬鹿はクラスレベルで制御なんかしないでいいからモジュールレベルでアクセスするapiだけ公開してろってこった。
アルゴリズムレイヤーでアクセスを無駄に禁止するようなクラスは有害でしかない。
適切なpublic具合というものがある。
例えばc++のstd::vectorなんかはかなりオープンアクセスなクラスだがあれが適切なんだよ。
でもって馬鹿に適切なアクセス制御なんて無理ってこと。
変に細かくするな。
馬鹿はクラスレベルで制御なんかしないでいいからモジュールレベルでアクセスするapiだけ公開してろってこった。
201デフォルトの名無しさん
2020/06/26(金) 10:58:13.55ID:uqHA56uo 適切なpublic具合
202デフォルトの名無しさん
2020/06/26(金) 11:23:09.67ID:TcIyIoqu203デフォルトの名無しさん
2020/06/26(金) 11:38:31.41ID:TyDtokvS 適切なpublic具合=ジャイアンルール
204デフォルトの名無しさん
2020/06/26(金) 11:48:31.80ID:klgKDCEw >>200
たぶん、162はクラスユーザーが呼び出した処理を実行している最中に内部処理を呼び出したら破綻するけど、いいのか?って言いたいのだと思う。
適切なアクセス修飾子をつけろは同意だが、彼に言うことではないと思う。
たぶん、162はクラスユーザーが呼び出した処理を実行している最中に内部処理を呼び出したら破綻するけど、いいのか?って言いたいのだと思う。
適切なアクセス修飾子をつけろは同意だが、彼に言うことではないと思う。
205デフォルトの名無しさん
2020/06/26(金) 11:51:10.08ID:klgKDCEw まぁ、スレッドがどうこうは...private関係あるのかな?って感じですが。
206デフォルトの名無しさん
2020/06/26(金) 12:36:59.06ID:s43csjES207デフォルトの名無しさん
2020/06/26(金) 13:04:36.71ID:8zz5Zpvs208デフォルトの名無しさん
2020/06/26(金) 13:19:36.46ID:SlEx0yXd 大昔、Javaやりだしてイキりだしたやつらが、オブジェクト指向もできない
老害とか騒いでいた歴史がある。そんな老害から見ると、gcに難しい事をまかせて、
馬鹿を吊り上げる仕組みなんだよなあ〜と皆言っていたのを思い出した。
今はPythonね。もっさ〜として、ダサすぎ。でも「俺AIの最前線だぜ」とか勘違い。
歴史は繰り返すのだ。
老害とか騒いでいた歴史がある。そんな老害から見ると、gcに難しい事をまかせて、
馬鹿を吊り上げる仕組みなんだよなあ〜と皆言っていたのを思い出した。
今はPythonね。もっさ〜として、ダサすぎ。でも「俺AIの最前線だぜ」とか勘違い。
歴史は繰り返すのだ。
209デフォルトの名無しさん
2020/06/26(金) 13:22:51.90ID:TcIyIoqu atomicityを保証するのを
呼び出し側の責任とするのか呼び出された側の責任とするのかは
pros/cons考えて使い分ければいい話でカプセル化必須とかにはならないよ
使う前にopenして終わったらcloseしてください的なAPIと
open/close含めて全部やってくれるAPIの違いと同じこと
呼び出し側の責任とするのか呼び出された側の責任とするのかは
pros/cons考えて使い分ければいい話でカプセル化必須とかにはならないよ
使う前にopenして終わったらcloseしてください的なAPIと
open/close含めて全部やってくれるAPIの違いと同じこと
210デフォルトの名無しさん
2020/06/26(金) 14:22:11.40ID:d6LVEoDZ211デフォルトの名無しさん
2020/06/26(金) 14:30:22.45ID:uqHA56uo すげえ、スレタイも日本語になってなくて、さらにまともな議論にすらなってないのに盛り上がってるw
オブジェクト指向じゃないやつのオブジェクト指向型言語のコード見れると思ってきたが、カオスだなw
オブジェクト指向じゃないやつのオブジェクト指向型言語のコード見れると思ってきたが、カオスだなw
212デフォルトの名無しさん
2020/06/26(金) 17:24:31.99ID:MKv++1da staticおじさんの詭弁ばかりで議論にすらならないから、もう、staticおじさん隔離スレ作った方がいいかもね。
【隔離】オブジェクト指向アンチスレ
みたいな感じで。
【隔離】オブジェクト指向アンチスレ
みたいな感じで。
213デフォルトの名無しさん
2020/06/26(金) 17:45:37.11ID:pGd8NqU0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 習政権、高市首相への態度硬化 台湾有事発言で連日非難 中国 ★11 [ぐれ★]
- 日本損失1.7兆円に修正 中国渡航自粛の影響試算 [蚤の市★]
- NY円、一時1ユーロ=180円台まで下落…1999年のユーロ導入以来初 [蚤の市★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 【外交】日中関係悪化、長期化の様相 2012年には自動車輸出80%減も ロイター★3 [1ゲットロボ★]
- 「どうしようもない」 ため息つくアジアの玄関口 中国の訪日自粛で−福岡市 [蚤の市★]
- 【実況】博衣こよりのえちえち朝こよ🧪 ★2
- 【実況】博衣こよりのえちえち朝こよ🧪
- カカロット、腰痛い
- 【超悲報】中国への武力行使、世論調査で「賛成」「どちらかといえば賛成」48.8% 「反対」「どちらかといえば反対」の44.2%を上回る [314039747]
- 【!?】高市早苗「靖国神社電撃参拝プラン」浮上!これもう戦争だろ… [481941988]
- 中国「高市が頭を下げて謝罪しない限り、絶対に許さない」 [329329848]
