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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2020/06/18(木) 23:47:36.69ID:l/2SQUll
カプセル化(英語: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)
2020/06/24(水) 22:55:53.79ID:evfa9tXu
そもそもprivateっていうのはコミュニケーションの道具で
privateって書いていなければ、好き放題アクセスしてOKという意味に
捉えられるかもしれないわけだ。

コメントの高度版なのだからコメントなくてもできるのは当たり前
だがそうすると修正が難しくなる

俺が作るなら〜っていうのはコミュニケーションが
必要ないから言える話
2020/06/24(水) 22:58:49.48ID:z1f+Mb2g
>>112
まぁ、そうだな。
ただ、面白いのが...
頭のいい人がOOPに漬かると、余裕ができた分、コンピューターの仕組みにとらわれずエンドユーザーの事を全力で配慮した品質の高い製品を作れるようになる。
2020/06/24(水) 22:59:48.33ID:z1f+Mb2g
アンカまた間違えた...
2020/06/24(水) 23:00:40.93ID:z1f+Mb2g
間違えてなかった。もうダメだ...
2020/06/24(水) 23:26:13.24ID:MQA513Hf
>>113
構造体でまるっと渡してやるよ
2020/06/24(水) 23:27:50.80ID:MQA513Hf
>>111
逆だな
デカければでかいほどオブジェクト指向で組むのはやめた方がいい
内部の状態遷移を誰も理解できない
2020/06/24(水) 23:31:43.79ID:MQA513Hf
そもそもさ
クラスで状態を保持するソースってさ
実装全部見て
何やるとどう状態遷移が起こるのか把握しないと使えないじゃん
これが最高にダルイ
もう年取ったしこんなの付き合ってらんない面倒臭くて
2020/06/24(水) 23:32:23.15ID:fkg3GZzF
単なるモジュール切り離しのための技術の一つだよ。
バカが騒ぎまくったせいでクソみたいなインターフェイスによる切り離しで
逆に見通しが悪くなることが多くなった。
細かい粒度で使うような技術じゃない。
2020/06/24(水) 23:41:46.40ID:MQA513Hf
>>121
いや、単純に面倒臭いだけでメリット皆無じゃん
2020/06/25(木) 00:13:01.48ID:JeYxH76v
内部に状態変数をもたれたらグローバル変数の比ではないほど厄介。
単体テストやデバッグが壮大なことになる。
2020/06/25(木) 00:16:04.75ID:JeYxH76v
「状態によって挙動が変わる」ものが何十個も何百個も集まったら誰も把握しきれない。誰も制御しきれない。
2020/06/25(木) 01:13:10.51ID:h5MGZkZK
>>119
>内部の状態遷移を誰も理解できない

使う側は内部の状態遷移なんて理解する必要ない
理解しないと使えないようならその設計が悪い
2020/06/25(木) 01:41:45.27ID:Q34w5rfS
内包してる初期化フラグ一つで
全く同じ入力に対して全く異なる出力が出てくるんだから
こいつは厄介だよ

勘がいいやつはこれだけでこの仕組みを使わない
2020/06/25(木) 03:09:24.52ID:9YSX2wtH
>>124
だからオブジェクト指向で小さくするんだよね
128デフォルトの名無しさん
垢版 |
2020/06/25(木) 03:13:43.10ID:AD4h9H61
>>110 君頭悪いねってよく言われない?
2020/06/25(木) 03:15:57.10ID:9YSX2wtH
>>128
言われない。むしろお前のほうが言われてるだろ。
2020/06/25(木) 04:09:57.03ID:3STWDldz
お前ら頭悪いね
131デフォルトの名無しさん
垢版 |
2020/06/25(木) 05:35:58.45ID:AD4h9H61
レス番まで指摘されても自分のおかしい発言に気づけないとはいとあはれ
2020/06/25(木) 05:40:21.51ID:hNcIaCHg
いいぞ、もっとやれ
2020/06/25(木) 07:10:48.49ID:MncJLzSh
内部を知る必要ない。インターフェースだけ守れ
2020/06/25(木) 07:22:24.62ID:/bWSJldt
彡 ⌒ ミ
(´・ω・`) 頭がなんだって?
2020/06/25(木) 07:30:13.69ID:p+gLKGcc
>>122
めんどくさくて新しい(もう20年以上前からメジャーではあるが...)考え方についていけません、てだけだろw

お前が懸念している内部の状態遷移が見えないというのは、見えなくていいように作り、見えなくていい部分だけを隠すんだよ。
お前の大好きな従来の手続き型だって、下手に作れば手続きを呼び出す順序や渡すべきデータの構造や内容が訳分からない複雑なものになるだろう。

単に自分の知ってる手法では良い設計を知っていて問題点を避けられる、よく知らない手法は問題を回避する方法がわからなくて問題のある手法と思えてしまう、ただそれだけのこと。
2020/06/25(木) 07:32:40.30ID:U43KJZDw
クラスの状態はクラスが知ってれば良い
という思想なんじゃねえの?
オブジェクト指向は?
2020/06/25(木) 07:35:44.39ID:Q34w5rfS
>>136
テストするんですが〜
2020/06/25(木) 07:53:57.86ID:Q34w5rfS
>>135
違うだろ
内部の状態が見えないのにテストなんかできないだろ
そのクラス使ってある限りそいつの状態次第で色んな動作しちまうんだから
はっきり言ってクラスは欠陥製品
特に内部に状態を保持するような使い方は害悪
2020/06/25(木) 08:19:04.16ID:p+gLKGcc
>>138
お前はオブジェクトの状態として、外部に影響を与える外部仕様の状態と、外部に影響を与えない内部仕様としての状態を混同してないか?
文字列のオブジェクトが文字列"abcd"を持つとして、それは外部に影響を与えるものだから、privateのメンバとして保持されていようがテストケースとしてそれを与えて状態を設定してテストすればいい。
一方、その文字列がどういう実装で保持されているか、ヒープなのか固定配列なのか、参照カウンタやさらに複雑な仕組みを使っているのかといった内部仕様的な状態は、このクラスを他と組み合わせてテストする段階ではテストする必要がない。こういう部分は、先にクラス単体のテストで保証しておけば良い。
そういう切り分けができない作りになっているなら、それは設計が悪い。
2020/06/25(木) 08:42:04.56ID:Q34w5rfS
>>139
いや、MSのクラスだってなんかよくわからん動作するのあるし
いいとか悪いとかじゃなくて状態を保持したら地獄行き

覚えといてね
2020/06/25(木) 08:57:56.71ID:rghIsJSV
>>122
めんどくさいのはその通り。
テスト駆動開発の本とか読んでどういうオブジェクトを引数にすると
テストしやすいかが理解できてくるとありがたさがわかってくる。
オブジェクト設計とか言い出す馬鹿は無視しろ。
2020/06/25(木) 08:58:07.22ID:XTsRyKlX
>>120

> そもそもさ
> クラスで状態を保持するソースってさ
> 実装全部見て
> 何やるとどう状態遷移が起こるのか把握しないと使えないじゃん
> これが最高にダルイ
> もう年取ったしこんなの付き合ってらんない面倒臭くて

だ、か、ら、
それを解決するためのオブジェクト指向だ つってんだろ!
クラスをオブジェクト指向も意識せずに、ただただ構造体みたいに実装して使うから、そうなるんだよ。
2020/06/25(木) 09:10:36.57ID:p+gLKGcc
>>140
どのクラスを指して言ってるのか知らないが、それはそのクラスの仕様自体の複雑さかお前の理解不足が原因で正しい挙動が分かってないとか未定義動作をさせているとかでないの?
状態を保持するのが問題なのではなく、知っておくべき状態、情報を知らずに上手くいかないのをオブジェクト指向のせいにしているだけのように見えるぞ。
2020/06/25(木) 09:17:11.38ID:rghIsJSV
状態をできるかぎり持たない方がいいってのはその通り。
ただ通信ソケットみたいなもの実装しようとすればどうしても状態を持つわな。
コネクション張るオーバーヘッドが小さくない時点で、性能出そうと思えば状態をもつしかないので。
2020/06/25(木) 09:21:43.95ID:H2Spozu7
オブジェクト指向って設計手法であると同時に
責任の切り分け手法でもあるんだよね 別の共同体(無償で手伝う気なしって意味で)
と作業する場合は必須でしょ
2020/06/25(木) 10:04:43.33ID:Q34w5rfS
>>142
は?メソッド全部staticにしてみろ
大半の問題が解決する
2020/06/25(木) 10:09:16.30ID:XTsRyKlX
>>146
解決しねーよ!むしろ、問題が多発するわ!
それ以前に、何の問題が解決するんだよ。
2020/06/25(木) 10:09:53.75ID:Q34w5rfS
>>145
いやー、クラス内で状態を保持するクラスが大量に呼ばれてて
本来はそれらの全ケースを網羅する必要があるが作業者の裁量で省略されてる状態じゃないっすか?
切り分けじゃないッスよね?
クラスAとクラスBがそれぞれチェックされててもそれらが合わさったことでバグが発生してる可能性もあるンスから
テストはちゃんとやるのであれば状態全網羅でしょう

ぶっちゃけ無理っすわ
状態を保持をやった時点で地獄行き

覚えた?確定事項よ
2020/06/25(木) 10:11:45.88ID:Q34w5rfS
>>147
グローバル変数さえなければ入力に対してぜってー決まった出力しか出ないのに何が問題出るの?
頭おかしいんじゃない?
○○構造のとき作りにくいってのはあると思うけど
わかりやすさでこれ以上はないよ
2020/06/25(木) 10:18:17.66ID:H2Spozu7
>>148
クラスAとクラスBがそれぞれチェックされててもそれらが合わさったことでバグが発生してる
可能性もあるンスから

こうなったときにAもBも直す必要がないでしょってこと どちらかを直すかは共同体
同士のパワーバランスで決まるんだけどねw そこはまあ大人になるしかない
2020/06/25(木) 10:20:16.04ID:XTsRyKlX
>>148

> >>145
> いやー、クラス内で状態を保持するクラスが大量に呼ばれてて
> 本来はそれらの全ケースを網羅する必要があるが作業者の裁量で省略されてる状態じゃないっすか?

何いってるんだ、こいつ。
クラスの基本的な仕組みから理解していないのか。
状態はインスタンスの数だけ持つことになるけど、呼ばれるロジックは一つだよ?
一つのロジックだけをテストすればいいのに、君はstatic化することで、わざわざ一つの状態につき一つのロジックを用意しようとしている。
つまり、君は一つのインスタンスにつき、一つのロジックを記述することで膨大な数のテストをしなければいけない状況を自分で作っている訳だ。

お前のやり方の方が無理ですわ。
2020/06/25(木) 10:27:24.45ID:Q34w5rfS
>>150
いや、わからないよね?
クラスCで使うためのクラスAとクラスBであるなら使えなきゃしょうがないじゃん
まあ、他でも使ってるなら安全牌はクラスC用のクラスAクラスBの複製だけどw
2020/06/25(木) 10:28:11.21ID:Q34w5rfS
>>151
バカの相手はできんわ
2020/06/25(木) 10:29:59.55ID:XTsRyKlX
しかも、1つの状態につき、一つのロジックを書くってことは...似たようなクラスが10個必要になったら、そのクラスのロジックを10回、コピペするわけだ。

で、その後、ロジックを修正することになった場合...10回、コードを書き直すの?
そっちの方が無理ですわ。

いっそのこと、staticにしないで、10個の状態が1個のロジックを参照するようにしておけば、ロジックの修正は一回で済む。
そっちの方が断然、楽だね。
2020/06/25(木) 10:31:50.71ID:XTsRyKlX
>>153

ブーメラン刺さってますよ。
私は仕事するので、その間に頑張って言い訳でも考えていてね!
2020/06/25(木) 10:38:02.77ID:H2Spozu7
>>152
もしかしてインスタンスの意義がわかってないのか?

他でも使ってるなら安全牌はクラスC用のクラスAクラスBの複製だけどw

まさしくこの状態を作りたいからクラスAクラスBのインスタンスをつかうんだけどな
2020/06/25(木) 10:41:15.81ID:Q34w5rfS
>>156
え?何言ってるの?
2020/06/25(木) 11:34:09.20ID:emOdy//g
クラス使わない人ってどうするんだろ
構造体?
全部インタプリタみたいな感じ?
2020/06/25(木) 11:40:28.84ID:h5MGZkZK
スレ主の愚痴はオブジェクト指向かどうかと関係ない
単に設計やテストのやり方を知らないだけ
2020/06/25(木) 12:22:45.24ID:9YSX2wtH
>>138
> 内部の状態が見えないのにテストなんかできないだろ

ん?全部publicにしておけばテストできるって話じゃないの?
もしくはprivateであっても、privateを読み書きできる機能があればテストできるでしょ?
2020/06/25(木) 12:25:19.77ID:XTsRyKlX
クラス使っても、staticにするとか訳のわからない事を言い出すし、根本的にオブジェクト指向を理解していない人達が愚痴っているだけだよな。

むしろ、何でもstaticにするのはC言語やC++言語から入った初心者なら誰もがやる失敗。
そんな初心者の失敗をいい歳したおっさんが、オブジェクト指向を批判しながらstaticを勧めるから駄目なんだよ。
我々からすれば、俺らの黒歴史時代の経験を何で上から目線で偉そうに語っているんだ?って感じだね。
流石に、上から目線で語る程、俺の黒歴史は酷くなかったぞ。
2020/06/25(木) 12:43:43.74ID:KZb+gCmD
カプセル化が要らない、と言うのなら、

誰もがデータを読み書きできる状態でどうやってアトミック処理を保証するのか

を教えて欲しいな。
もしかしたら大発明かも。
2020/06/25(木) 12:49:36.79ID:Q34w5rfS
>>160
内包されるよりいくらかCool
ただ、そこまでpublicにできるならstaticにしてほしい
実行時にstatesがnoneでないと正しく動かないんですよこのメソッドって
言われても知らねーよそんなのって感じ
じゃあstatesはどうやってnoneにするんだべって
俺に調べさせるのやめてもらっていい?

もっと言えばstaticにすればそんなことないじゃん?
2020/06/25(木) 13:01:46.41ID:9YSX2wtH
>>163
内包したらテストできないだろ?
2020/06/25(木) 13:06:39.24ID:XTsRyKlX
そもそも、クラスって正常に動く前提で使うものであって、なんで、クラスを使う側がクラス内部動作をテストしないといけないのかわからん。
クラスのテストは、クラスを実装する側の責任だろうに。

...というツッコミをそろそろしてもいいかな?
2020/06/25(木) 13:17:56.03ID:p+gLKGcc
>>165
それに類することをすでに>>139で指摘したんだが、自分考えに凝り固まった意固地なおじさんには通じなかったようだ。
2020/06/25(木) 13:23:03.90ID:p+gLKGcc
>>163
そのstatesがnoneでなければならないという仕様は、そのクラスの使い方として外部に明示すべき仕様だろう。そそういう情報が示されていないならドキュメントの不備だし、そういう仕様が公開されていても外部からstatesの値を参照または設定できないのなら設計の不備だろう。
延々と繰り返し指摘しているように、それはオブジェクト指向そのものの問題でなく正しく設計、運用がされていない問題だろう。
2020/06/25(木) 13:29:58.05ID:XTsRyKlX
>>166
あっ、ほんとだ。
2020/06/25(木) 15:28:55.17ID:xmAi/11M
カプセル化の最大のメリットは中で何をしているかどうなっているかは気にせずに
外からは引数を与えると仕様通りの値が戻ってくるというところだよね?
170デフォルトの名無しさん
垢版 |
2020/06/25(木) 16:47:53.33ID:CiEXbKUP
グローバル変数に格納されている値で関数の挙動が変わるより悲惨だぞ。
グローバル変数が見えないんだから。
2020/06/25(木) 16:52:12.11ID:BM3o+zlw
ん?
2020/06/25(木) 17:00:47.93ID:XTsRyKlX
ID変えて振り出しに戻るって奴?
2020/06/25(木) 17:03:53.35ID:p+gLKGcc
ここまで話の通じない奴だと思うと相手するのがバカらしくなってくるね。まさに徒労という言葉がふさわしい。
2020/06/25(木) 19:27:44.23ID:RQlIhWFK
>>39
カプセル化こそが善
カプセル化こそがOOPのうまみ
2020/06/25(木) 19:35:56.42ID:oGWS7APt
全部staticってどうするんだろう
メソッドの引数すごいことになってそう
176デフォルトの名無しさん
垢版 |
2020/06/25(木) 20:15:30.81ID:LQ8CyLE7
オブジェクト指向のあらゆる用語が
ノムリッシュみたいになってると思う

JavaScriptが発展して、クラス名と同じ名前の
ファイル名にしなくていい事が分かったわけじゃん
それどころかクラスすら必要なしでオブジェクトが作れる事が
分かったわけじゃん
クラス名と同じ名前のコンストラクタなん定義しなくても
オブジェクトが作れる事が分かったじゃん

オブジェクトとは詰まるところ連想配列と大して違いが
ないキーと値で構成された入れ物でしかない事がわかった。
この「連想配列と違いがない」というシンプルな真実が
どれだけありがたいことか

クラスを始めとする様々なルールは
ソフトウェア設計上の重要な概念かと思ってたら
単なるJavaの変な言語仕様でしかなかったわけだ。
変数を「フィールド」
関数を「メソッド」
関数を「コンストラクタ」
こう言い換える必要がどこにある?

こんなノムリッシュなバズワードに
今までどれだけ煙にまかれて
シンプルな真実が見えなくなってたことか
2020/06/25(木) 20:22:00.90ID:9YSX2wtH
>>176
3行でまとめて
178デフォルトの名無しさん
垢版 |
2020/06/25(木) 20:24:37.53ID:LQ8CyLE7
それに加えて
「継承」「抽象クラス」「オーバーライド」
「カプセル化」「ポリモーフィズム」
こんな用語は必ずしもやるのが正しいものではないし
やればやるほどシステムを必要以上に複雑にして
邪魔にしかならないものばかり

それなのに
「オブジェクト指向の本質は継承とカプセル化とポリモーフィズムだ。」
なんて馬鹿げた事を言い始めるノムリッシュな奴が出始めて

JavaScriptならオブジェクトの内部に
別のオブジェクトを入れるという一瞬の操作で
終わるものを「委譲」など余計な用語を定義して

わざわざ定義しなくてもいいようなくだらない
小難しそうな用語だらけになって
「お前はooの概念を正しく理解してない」
という偉そうな批判がどれだけ飛び交うことか
179デフォルトの名無しさん
垢版 |
2020/06/25(木) 20:31:34.09ID:LQ8CyLE7
webフレームワークの
MVCの「モデル」ってそんなに重要ものなのか?
「モデル」なんてものがSQLやDBMSを隠蔽して
何がありがたいと言うのか
むしろ隠蔽されて困ることの方が多いんじゃないか?
何故一度テーブル作成時にて定義した
大量の列定義を
またモデル層のフィールド定義で2度もやり直さないといけないのか
要らないだろ。「モデル」なんて

最近は従来軽視されてきたクライアントサイドJavaScriptの
方がよっぽど重要なことが分かってきて
ReactやVueのようなクライアントサイドフレームワークが
重要視されてるわけじゃん

「オブジェクト指向」って結局何がありがたいのよ?
2020/06/25(木) 21:03:02.32ID:9YSX2wtH
1行でまとめて
2020/06/25(木) 21:03:32.44ID:9YSX2wtH
> 「オブジェクト指向」って結局何がありがたいのよ?

多くの人で作業分担し、協力してプログラムを作れる所
2020/06/25(木) 21:03:50.52ID:9YSX2wtH
ReactやVueはオブジェクト指向
2020/06/25(木) 21:03:50.90ID:lu0UaGfG
>>177
Javaなんてクソを
オブジェクト指向の代表として考える
かわいそうな子
2020/06/25(木) 21:04:45.08ID:9YSX2wtH
>>183
Javaはオブジェクト指向を採用した言語の一つだよ
いつから代表になったのさ
お前が代表だと思っていて、代表だと思ってる自分自身を批判してるだけじゃんw
2020/06/25(木) 21:05:53.76ID:lu0UaGfG
>>180
抽象化を理解できないかわいそうな子
2020/06/25(木) 21:09:21.00ID:9YSX2wtH
>>185
お前の文章の話をしてるんだが。
そもそも読んでないのに、抽象化が何の関係があるんだ?
2020/06/25(木) 21:17:15.89ID:lu0UaGfG
>>184
>>177
>クラスを始めとする様々なルールは
>……
>単なるJavaの変な言語仕様でしかなかったわけだ。

で、「いつから代表になったのさ」がなんだって?
数スレも遡れないようじゃ生きていくの大変だろうに……
2020/06/25(木) 21:43:56.18ID:9YSX2wtH
だから読んでないと言ってるw
2020/06/26(金) 02:54:16.76ID:uM2i3sYA
関数化したりクラス化したらプログラムが高速化したんだけどGCが発生するタイミングが細かくなったってことでええんか?
2020/06/26(金) 07:35:03.68ID:eLfJJdHb
オブジェクト指向は整理術
棚なんて要らん棚があるから余計な物も管理する羽目になると床置する人が現実に居るのと同じ
2020/06/26(金) 08:53:43.63ID:crXMwmqp
まああまりに糞な抽象化だともう全部publicでレコードとして扱えやとは思うな。
抽象化を万能なものと思い込みすぎな馬鹿が多すぎるからオブジェクト指向に対する誤解が生まれる。
2020/06/26(金) 09:44:19.22ID:8zz5Zpvs
っていうか抽象化ってどんな仕様のどの部分を一括に扱ってるのか?
ドキュメントがないと最悪
ここの仕様は特殊だからこれとは別にしないとなって話ができない
ドキュメント書かないなら抽象化するな
害悪でしかない
193デフォルトの名無しさん
垢版 |
2020/06/26(金) 09:50:43.03ID:Op8/e6Io
>>190
直置きはダメだが
ほとんどの場合「棚をしまう為の棚」
「それをしまう為の棚、それをしまうための棚…」
ってなってる

で、「ハサミ使いたいんだけどどこにあったっけ?」
って探すのに非常に苦労する。
見つけやすくするための棚だったはずなのに。

それどころか
棚「ハサミは内部で使うから自分で使わなくていいです。
『切る 』という目的だけに集中して、そう命令してください」
と、棚に言われる。
しかし切られた結果を見ると自分が欲しかった結果と微妙に
違うことがよくある。
だから「もう俺が直接切るから、いいからハサミをよこせ」
っていう話になる。


あと抽象化については
「これは抽象的な棚なので中には何も入っていません。
私を参考にした具体的な棚が何処かにあると思うのでそれを
探してください。」となる。

じゃあ「具体的な棚って一体どれだ?なんか長い名前の棚が
やたら沢山あるけどどの棚から探せばいいんだ??」
となる
2020/06/26(金) 09:55:00.00ID:50iMo9Ym
>>193
たとえ話はややこしいだけで何の意味もないから
具体的な事例で言えよ
2020/06/26(金) 09:55:48.09ID:50iMo9Ym
具体的に何のことを言ってるのか
考えなきゃならんようなたとえ話に価値はねーからな
説明が下手すぎる
2020/06/26(金) 10:13:27.50ID:wYfFflLL
>>193
整理が下手なやつの例をあげて、だから整理はすべきでないと言ったって意味がないだろう。
2020/06/26(金) 10:36:41.37ID:klgKDCEw
このスレにstaticおじさん、絶対沸いてるだろ。
2020/06/26(金) 10:41:42.69ID:s43csjES
>>193
だから具体的な問題>>162に答えてくれよ。
複数のプロセス・スレッドが勝手気ままにデータを処理しても問題ない、というならおめでたいわ。
2020/06/26(金) 10:42:57.59ID:8zz5Zpvs
>>198
そんときだけ使えばいいじゃん
それ以外じゃ使うなよ
2020/06/26(金) 10:54:38.35ID:crXMwmqp
>>198
アルゴリズムレイヤーでアクセスを無駄に禁止するようなクラスは有害でしかない。
適切なpublic具合というものがある。
例えばc++のstd::vectorなんかはかなりオープンアクセスなクラスだがあれが適切なんだよ。
でもって馬鹿に適切なアクセス制御なんて無理ってこと。
変に細かくするな。
馬鹿はクラスレベルで制御なんかしないでいいからモジュールレベルでアクセスするapiだけ公開してろってこった。
2020/06/26(金) 10:58:13.55ID:uqHA56uo
適切なpublic具合
2020/06/26(金) 11:23:09.67ID:TcIyIoqu
トレードオフを理解できてないうちはどっちもどっち
物事の一面しか見れてない

>>190>>193の比喩は理解の程度が知れるという意味ではすごく有意義
2020/06/26(金) 11:38:31.41ID:TyDtokvS
適切なpublic具合=ジャイアンルール
2020/06/26(金) 11:48:31.80ID:klgKDCEw
>>200
たぶん、162はクラスユーザーが呼び出した処理を実行している最中に内部処理を呼び出したら破綻するけど、いいのか?って言いたいのだと思う。
適切なアクセス修飾子をつけろは同意だが、彼に言うことではないと思う。
2020/06/26(金) 11:51:10.08ID:klgKDCEw
まぁ、スレッドがどうこうは...private関係あるのかな?って感じですが。
2020/06/26(金) 12:36:59.06ID:s43csjES
>>199
好き勝手にデータに読み書きできるのに、どうやって「その時だけ」を保証するんだよ。

結局カプセル化必須じゃねぇか。
何のアイディアも無しか。アホらしい。
2020/06/26(金) 13:04:36.71ID:8zz5Zpvs
>>206
そういう場所だけそうすればいいじゃん
全部そうなら無能過ぎてプログラム組む前にもっとやることあるんじゃないかなぁ
208デフォルトの名無しさん
垢版 |
2020/06/26(金) 13:19:36.46ID:SlEx0yXd
大昔、Javaやりだしてイキりだしたやつらが、オブジェクト指向もできない
老害とか騒いでいた歴史がある。そんな老害から見ると、gcに難しい事をまかせて、
馬鹿を吊り上げる仕組みなんだよなあ〜と皆言っていたのを思い出した。
今はPythonね。もっさ〜として、ダサすぎ。でも「俺AIの最前線だぜ」とか勘違い。
歴史は繰り返すのだ。
2020/06/26(金) 13:22:51.90ID:TcIyIoqu
atomicityを保証するのを
呼び出し側の責任とするのか呼び出された側の責任とするのかは
pros/cons考えて使い分ければいい話でカプセル化必須とかにはならないよ

使う前にopenして終わったらcloseしてください的なAPIと
open/close含めて全部やってくれるAPIの違いと同じこと
2020/06/26(金) 14:22:11.40ID:d6LVEoDZ
>>208

> イキりだしたやつらが、
> 馬鹿を吊り上げる
> ダサすぎ。

うわぁ。典型的老害だな。
2020/06/26(金) 14:30:22.45ID:uqHA56uo
すげえ、スレタイも日本語になってなくて、さらにまともな議論にすらなってないのに盛り上がってるw
オブジェクト指向じゃないやつのオブジェクト指向型言語のコード見れると思ってきたが、カオスだなw
2020/06/26(金) 17:24:31.99ID:MKv++1da
staticおじさんの詭弁ばかりで議論にすらならないから、もう、staticおじさん隔離スレ作った方がいいかもね。

【隔離】オブジェクト指向アンチスレ
みたいな感じで。
2020/06/26(金) 17:45:37.11ID:pGd8NqU0
>>212
もういっそのこと、こんなんでどうだろうか?
【老害】staticおじさんと戯れるファンの集い【詭弁】
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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