オブジェクト指向ってクソかよPart5

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


カプセル化(英語: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/
前スレ
オブジェクト指向ってクソじゃねぇかよPart4
https://mevius.5ch.net/test/read.cgi/tech/1556462315/
2019/10/10(木) 02:11:13.44ID:clBk4+T+
ようするに、今話をしてるのは、オブジェクト指向のカプセル化とはどういうことなのか?
という話なのだから、特定の言語での実装の話をするのは間違い。

"オブジェクトがカプセル化されていれば" インターフェースを変えること無く
内部の実装を変更することが可能になる。

言い方を逆にすると、インターフェースを変えること無く内部の実装を変更することが可能であれば
"そのオブジェクトはカプセル化されている" ということ
2019/10/10(木) 05:56:07.99ID:mQOxxhmy
継承は、10年くらい前はmixinだのtraitだの流行ったけど、今やどうでもいいわって感じだな
2019/10/10(木) 08:58:56.73ID:WGsUN34T
1のテンプレ、時代遅れすぎないか?
2019/10/10(木) 09:35:51.74ID:6kYzxc6O
最先端だろ
2019/10/10(木) 22:18:20.63ID:EN4r3i1C
>>40
カプセル化の概念を狭く捉えすぎ
Javaのgetter/setterやRubyのアクセサ、C#のプロパティなんかは
カプセル化を実現するための手段の一つであってそれイコールカプセル化じゃない

それにJSでもRubyでもC#でも直接インスタンス変数にアクセスしてるコードを
getter/setterやアクセサやプロパティ経由に変更した場合に呼び出し側に変更が必要な場合もあるから
デフォルトでカプセル化されてるとか考えるのは間違ってるよ

人にもう少し勉強したほうが良いよとか言う前に自分が勉強しようね
2019/10/10(木) 23:56:14.42ID:2XAtZlBW
…カプセル化じゃない
…間違ってるよ
…勉強しようね
2019/10/11(金) 01:26:24.59ID:cg6Wcsaq
>>46
それな。自分の意見を何一つ言ってないwww
2019/10/11(金) 01:37:36.70ID:cg6Wcsaq
たまにクラスにprivateが無いからカプセル化できないと言ってるやつがいるが、
「_で始まる変数名はprivateとする」という規約を作れば実現可能

C言語でオブジェクト指向をするという話と同じなんだよ。
C言語はオブジェクト指向言語ではないのでクラスなどが無いが
だからといってC言語でオブジェクト指向ができないわけじゃない。

言語機能として、privateやプロパティはカプセル化専用の機能であるが
カプセル化専用の機能がないからと言って、カプセル化ができないわけじゃない。
カプセル化専用の機能がなくとも、「_で始まる変数名はprivateとする」
「publicフィールドを使わずに、関数経由で読み書きする」という"規約"でカプセル化出来る。

関数経由で読み書きするのは、カプセル化専用の機能(の一つ)が無いJavaで
カプセル化するための"規約"に過ぎず、多くの言語では関数経由にする必要がない。

いずれにしろ、カプセル化をどうやって実現するかは言語の機能によって変わるが
カプセル化の概念は、内部構造とインターフェースを分離するして
外から内部構造を直接いじらないようにすること
2019/10/11(金) 07:28:14.10ID:Txg9tUjJ
プログラムの基礎であるメンバのスコープまたは
シンボルの命名規則を使ったアクセス制限規約のこと言ってんのかよ
元々簡単な筈のことなのに説明が下手にくどくて、
煙に巻かれて読んで損したような気分
2019/10/11(金) 08:30:07.55ID:m78/Olsy
>>49
間違い。文章短いのに何もわかってない
いや、短いからわかってないのかw
2019/10/11(金) 12:59:52.11ID:kot4gcq1
larabelとかよくできてるじゃん
2019/10/11(金) 14:21:29.12ID:dN/CgRLR
カプセル化はデータとデータに対する操作をセットにすること

privateでデータを隠すのはデータ隠蔽
インターフェースで実装を隠すのは情報隠蔽
2019/10/11(金) 14:35:13.43ID:QtmRuluN
× カプセル化はデータとデータに対する操作をセットにすること
○ オブジェクト指向はデータとデータに対する操作をセットにすること

データとデータに対する操作をセットにすることは、カプセル化とは関係ない
2019/10/11(金) 14:38:29.98ID:QtmRuluN
privateでデータを隠すのはデータ隠蔽
インターフェースで実装を隠すのは情報隠蔽

そしてカプセル化という概念は、
「データ隠蔽」と「情報隠蔽」を使って実現するもの

privateやインターフェースがなくても規約等で「データ隠蔽」と
「情報隠蔽」相当のことを行うことも可能だが面倒になりやすい。
そのために言語が用意してくれる機能がprivateやインターフェース
2019/10/11(金) 14:42:40.80ID:jSXBX1w1
オレオレ定義の押しつけあいで言葉遊びしてて虚しくねぇの?
2019/10/11(金) 14:45:08.49ID:QtmRuluN
一般的な定義を言ってるんだが?
2019/10/11(金) 15:05:22.26ID:dN/CgRLR
>>53
それどこ情報?
2019/10/11(金) 15:06:27.08ID:dN/CgRLR
>>54
カプセル化の定義は何?
2019/10/11(金) 15:11:03.25ID:dN/CgRLR
ちなみにワイはwikipedia
オブジェクト指向はオブジェクトを大事にします
ってことなので値と操作をセットにすることとは違うよ
2019/10/11(金) 15:24:31.99ID:QtmRuluN
>>57
https://stackoverflow.com/questions/13913174/encapsulation-vs-information-hiding
2019/10/11(金) 15:28:02.10ID:QtmRuluN
>>60のリンク先を更に探すとここにたどり着いた

http://web.archive.org/web/20080906224409/http://www.itmweb.com/essay550.htm
2019/10/11(金) 15:29:01.27ID:mjZX3Aly
読めない(´・ω・`)
2019/10/11(金) 15:30:20.85ID:dN/CgRLR
>>60
僕のが正しいですよね
2019/10/11(金) 15:34:07.32ID:QtmRuluN
いいえ
2019/10/11(金) 15:53:18.86ID:dN/CgRLR
>>64
いいえじゃないが
2019/10/11(金) 15:54:47.89ID:dN/CgRLR
ちなみに僕はJavaのブロンズの資格持ちです
Javaの試験では僕が示したとおりに解答しないと落ちます
2019/10/11(金) 15:56:16.21ID:dN/CgRLR
僕の定義は一般的ですよ
全世界で行われてるプログラミングの最も人気のある試験での模範解答なので
2019/10/11(金) 15:58:39.66ID:dN/CgRLR
そしてあなたはカプセル化を説明できていない
2019/10/11(金) 16:01:06.01ID:dN/CgRLR
カプセル化とは何か?
2019/10/11(金) 16:03:57.37ID:mjZX3Aly
ウインダムとかミクラスとかアギラとか
2019/10/11(金) 16:06:36.86ID:QtmRuluN
>>41で書いたとおり

"オブジェクトがカプセル化されていれば" インターフェースを変えること無く
内部の実装を変更することが可能になる。

言い方を逆にすると、インターフェースを変えること無く内部の実装を変更することが可能であれば
"そのオブジェクトはカプセル化されている" ということ
2019/10/11(金) 16:15:29.39ID:dN/CgRLR
>>71
それ情報隠蔽やで
2019/10/11(金) 16:15:57.04ID:dN/CgRLR
試験落ちてまうど
2019/10/11(金) 16:17:48.83ID:QtmRuluN
>>72
情報を隠蔽することは必ずとも必須ではない
すべてさらけ出していたとしても、
インターフェースを変えること無く内部の実装を変更することが
可能になっていればカプセル化されてると言える。
2019/10/11(金) 16:19:56.39ID:dN/CgRLR
>>74
君の思いはわかったけど独りよがりの思い込みに価値などない、君はJavaブロンズに受からない
2019/10/11(金) 16:20:25.93ID:dN/CgRLR
君は完全に間違っている
2019/10/11(金) 16:21:29.10ID:dN/CgRLR
カプセル化は値と操作の一体化のこと
2019/10/11(金) 16:26:03.75ID:dN/CgRLR
Javaブロンズの前で君たちの浅はかな理解など取るに足らぬ
2019/10/11(金) 16:43:07.90ID:LwZAFcHp
カプセル化おじさんはちからをためている。
2019/10/11(金) 17:10:40.83ID:ALv2Fv/b
どうしてキャプセレチオンしないのよーッ!
2019/10/11(金) 17:48:10.46ID:6SqPsHXs
ところで、ここまでオブジェクト指向をクソだとする根拠があがらないのはなぜ?
オブジェクト指向プログラマーvs誰がとは言わんがオブジェクト指向プログラマー気取り が激突するスレかな?
2019/10/11(金) 17:57:40.40ID:ljKmFHFW
>>81
そもそも、オブジェクト指向にメリットが無いからな
強いて言えば単に費やす時間が無駄なだけ

オブジェクト指向とはソースファイルのどこに処理を書くか?
ただそれだけの技術である

→実はどこに書いたって動く(核爆)
2019/10/11(金) 18:02:01.44ID:dN/CgRLR
オブジェクト指向がクソなのはインスタンス変数の存在のせい

できるだけメソッドの行数を減らすとかインスタンス変数を使わないメソッドはオブジェクト指向じゃないとか巷で言われてるせいでそれを真に受けた意識高い初心者がゴミのようなコードを量産してしまうところにオブジェクト指向の限界を僕は感じましたよ
2019/10/11(金) 18:14:37.08ID:dN/CgRLR
オブジェクト指向で作られたhello worldを見ればわかるがオブジェクト指向は過度な抽象化を促進する抽象化圧力つまりアブストラクションプレッシャリングアクセラレイトがかかるからそれをいなせる胆力がないと使いこなすのは難しい
2019/10/11(金) 18:21:24.34ID:6SqPsHXs
>>83
なるほど、staticおじさんがstaticおじさんになった時の主張に似ているね。

オブジェクト指向の定義はさておき、インスタンス化のメリットはクラスという型から必要な数だけオブジェクトを生成できること。
そのメリットが無いのならJavaやC#のMathみたいにstatic化すればいいじゃんって思うし、オブジェクト指向をクソ呼ばわりする根拠が弱い気がするが...。

実際、自分もMathみたいにインスタンス化が不要であればstaticにするし。
まぁ、staticおじさんみたいに全部static化はしないが。

>>82
まぁ、既存の方法で困っていないのならオブジェクト指向は採用しなくてもいいんじゃないかな?
クソ呼ばわりしたら、なんで?って聞くけど。
コーディングの行数は比較したことがないからなんとも言えないが、オブジェクト指向導入で工数削減なら実現した事例は、いくらでもあるよ。
書いたコードを再利用しやすいのがオブジェクト指向のメリットの一つだからね。
2019/10/11(金) 18:54:22.09ID:QtmRuluN
>>83
× オブジェクト指向の限界
○ お前の友の限界。類友
2019/10/11(金) 20:44:45.28ID:kv91xo2J
細胞が膜で覆われてるのに似てる。
中身のものを直接扱えないのもな。
2019/10/11(金) 20:59:44.57ID:Obz6LqVu
カプセル化を説明するときはリモコンや自販機や車とか、あとお店のサービスで普通例えない?

的外れな例えはむしろ害となりがち
2019/10/12(土) 00:05:00.41ID:hC2MVz5n
変なのがワラワラ湧いてきたな。
オブジェクト指向はまるで池沼ホイホイだな。
2019/10/12(土) 03:38:52.22ID:m58DXjin
カプセル化と継承を同じレベルで考えてるやつがいるからな。
継承は「行うこと」だが、カプセル化は「行うこと」じゃなくて概念。

カプセル化という概念がわかっていて、その概念に従って設計すれば
こういうメリットがありますよーっていう話だから

カプセル化という概念に従った設計をするときに使える便利な道具が
privateやインターフェース。だからといって別に使う必要があるわけじゃない。


多く言語ではカプセル化という概念を取り入れて言語を作っているから、
publicプロパティを使っていても、カプセル化に従うことが出来るが、
Javaではsetter/getterというワークアラウンド(_で始まる名前をprivate変数とするという規約と同じ)が
必要になるが、多くの言語ではそんな事気にしなくてもカプセル化という概念を満たすコードが書ける
2019/10/12(土) 06:02:26.53ID:hC2MVz5n
カプセル化とは何か人によって解釈がさまざまで、よく話が発散するが、
カプセル化を含むオブジェクト指向の害を弾劾するこのスレにおいて
自分の考えこそカプセル化として正しいとか主張すること自体
スレ違いなのは理解できている?
2019/10/12(土) 06:31:54.75ID:1JRUpTA+
腹いてえ下痢だよゲリぃ
グリーンピース食べすぎたわ
2019/10/12(土) 06:34:02.05ID:hC2MVz5n
ボッチしとけよ
2019/10/12(土) 09:27:37.09ID:tUC1lSfU
>>91
カプセル化とは人それぞれである
カプセル化の説明すること事態がスレ違いだ
理解してるかー?
2019/10/12(土) 09:40:03.04ID:PKccBz0E
オブジェクト戦士(バカ)多いな
2019/10/12(土) 09:48:44.50ID:tUC1lSfU
> 変なのがワラワラ湧いてきたな。
> オブジェクト指向はまるで池沼ホイホイだな。

> オブジェクト戦士(バカ)多いな

ここは罵り合うだけのスレかな?
やーい、お前のソースコードs t a t i c!
2019/10/12(土) 10:28:24.31ID:7TGqmTiW
カプセル化おじさんのレス見て思うのは
自分の無知や間違いを認められなくなったら技術者としては終わりだなってこと
歳を取ると老害が増える理由
2019/10/12(土) 10:31:11.04ID:TBjVU2MA
↑このように自分の意見を何一つ言わず、
相手を批難するばかりになったらお終い
2019/10/12(土) 10:33:55.10ID:EMzTIefb
↑このように自分の意見を何一つ言わず、
相手を批難するばかりになったらお終い
2019/10/12(土) 10:37:18.66ID:TBjVU2MA
>>99
俺は意見を言ってるからそれは的外れ
2019/10/12(土) 10:40:44.08ID:Sr/UvC0O
>>97も意見じゃね?
老害の件はわからんが。
2019/10/12(土) 10:41:35.07ID:TBjVU2MA
>>101
オブジェクト指向に関する意見に決まってるだろw
2019/10/12(土) 10:47:40.84ID:Sr/UvC0O
> オブジェクト指向に関する意見に決まってるだろw

???
2019/10/12(土) 10:58:35.93ID:nGOXFHJU
ここはオブジェクト指向のスレなんだから
カプセル化についての主張をするのは正しい

だけど、それは間違いだーっていうだけで
何が正しいのかの自分の意見を言わないのは老害でしかない。

という話だよ
2019/10/12(土) 11:08:34.26ID:6fabclhr
>>104
それな。間違ってるって言うだけなら
何も知らなくても出来る。
2019/10/12(土) 11:17:25.67ID:Sr/UvC0O
てっきり、いきなり現れた奴がブーメラン発言したのかと思った。
直前に>>95みたいなのもいたし。

名無しさんのままだと、誰が何を言ったのかわからん...。
大体、察したが。
2019/10/12(土) 11:55:42.30ID:PKccBz0E
相変わらずオブジェクト戦士はバカばっかりだな
2019/10/12(土) 12:02:36.13ID:68Eagdnq
おじさんってだけで拒否反応や反抗心から若者の意見を理解しない老害扱いするけど、
若者がおじさんの主張に耳を傾けてないのは結局おじさんと同じことしてるよね

おじさんの局所的な経験則やノウハウにも局所解としての妥当性を認めていいんじゃないかな?
銀の弾丸はないんだし

自分は関数型言語は型理論を触った程度の理解をしつつ、
オブジェクト指向推進派だったけど、長いことやってると
確かにオブジェクト指向に疑問を感じるときがある

例えば、複数のオブジェクトで協調動作させようとすると、
クラス内にカプセル化できなくなって、〜コントローラや〜マネージャーとか
どちらかというと抽象的なオブジェクトで溢れかえる設計ってとてもよく見るし自分も書く

C#のstaticクラスのstaticメソッドとかはそれへの部分的な解決法になるけど、
オブジェクト指向っていうより関数型的な感じがする
109デフォルトの名無しさん
垢版 |
2019/10/12(土) 12:09:11.67ID:vBnCHMzu
曰く、銀の弾丸はない
でも、金の睾丸は?
2019/10/12(土) 12:24:36.42ID:6fabclhr
>>108
コントローラーやマネージャーがが
クラス内の内部構造に直接アクセスするってどういう事?
2019/10/12(土) 12:50:30.72ID:7TGqmTiW
>>104
>だけど、それは間違いだーっていうだけで
>何が正しいのかの自分の意見を言わないのは老害でしかない

いい歳したおっさんが二元論でしか物事を考えられない
答えを教えてくれないから「自分の意見を言わない」といって批判する
こういう考え方が老害そのもの


>>108
カプセル化おじさんとブロンズ君のやり取り見れば主張に耳を傾けてないのはどちらか明らか
中身の良し悪しは別にしてブロンズ君はカプセル化おじさんの意見に耳を傾けた上で論拠を持って適切に反論してる
かたやカプセル化おじさんは…
2019/10/12(土) 12:51:06.93ID:6fabclhr
>>111
だからそんな話じゃなくて
オブジェクト指向関連の話をしろよ
自覚ないのが一番たちが悪い
2019/10/12(土) 13:25:11.09ID:PKccBz0E
オブジェクト指向にメリットなんかねー時点で議論など無駄
2019/10/12(土) 13:36:07.11ID:68Eagdnq
>>110
オブジェクトの内部構造に関係ない協調動作に関する処理を
どこに配置するべきかって話

専用のコントローラや専用のマネージャークラスが頻繁に作られるけど、
別のアプローチ(C#のstaticクラスのstaticメソッドとか)が可能なこともあるし、
別のパラダイムも検討する価値あるんじゃないかなと思うようになった

他の例をあげるなら、特殊な数値クラスを作ったとして二項演算子などの
演算子を数値クラス内にカプセル化するべきかって話も
協調動作の問題と重なってる部分があると思う
(ここまで行くと言語側に手を加えるレベルの話になるけど)
2019/10/12(土) 13:50:47.60ID:hC2MVz5n
オブジェクト指向が人の間に広まっていくうちに
どうしてだんだん変なやり方に変わってゆき
非科学的で都市伝説みたいな方法論になってしまったのか
よく分かる流れだな
2019/10/12(土) 14:12:10.68ID:6fabclhr
複雑なものをシンプルに扱えるようにしましょうという
人間の心の話なのになんで科学がでてくるの?
2019/10/12(土) 14:26:06.65ID:Y/6Ne90r
>>108

> C#のstaticクラスのstaticメソッドとかはそれへの部分的な解決法になるけど、
> オブジェクト指向っていうより関数型的な感じがする

オブジェクト指向に関数型を適用してはいけないなんてルールは無いと思う。
そんなこと言い出したらOOPする際はラムダ式使うなって話になりそう。

あと、Mathクラスの解釈だが...
自分はMtahクラスみたいにstatic化するべきクラスでも、最初は非staticで設計する。
つまり、こうなる。
Math m = new Math();
int x = m.abs(引数);

でも、これだとstaticおじさんの言うとおり、オブジェクト指向ってしっくりこないんです状態。
※元ネタのstaticおじさんは具体例は挙げなかったが。

そこで、オブジェクト指向プログラマーは気を効かせ、static化する。
int x = Math.abs(引数);

つまり、static化は省略できるものは省略しよう...という、オブジェクト指向プログラマーの気遣い。
そういう解釈でいいと思うよ。

まぁ、どうしても「そんなのオブジェクト指向じゃねえ!」と言うのならオブジェクト指向の型を破ると解釈してもいいけどね。
このスレ的にはOOPの解釈を曖昧にするのは駄目な気もするが、個人的には扱いやすいクラスさえ作れれば何でもいいや。
2019/10/12(土) 14:35:40.11ID:6fabclhr
はぁ?absをオブジェクト指向にするなら
Number n = new Integer(-123)
n.abs() やろ
2019/10/12(土) 14:40:25.05ID:Y/6Ne90r
>>118
ソウダネー。
2019/10/12(土) 14:44:19.05ID:6fabclhr
>>119
そうだよ。Rubyとか勉強してみな
2019/10/12(土) 14:44:35.81ID:hC2MVz5n
>>116
そういいながら、逆にシンプルなものを複雑にして
迷信じみたことを技術の世界に持ち込むから
2019/10/12(土) 14:49:19.34ID:6fabclhr
そうあってほしいと>>121が考えてるだけ
2019/10/12(土) 14:50:23.73ID:Y/6Ne90r
>>120
(うわっ、こいつ面倒くせ)
そんなにMathが気にくわないのなら、俺じゃなくてOracleやMicrosoftに連絡すれば?
別にabsの実装について話がしたかったわけではないし。
2019/10/12(土) 14:50:31.28ID:hC2MVz5n
今まさにオブジェクト指向によってもたらされている混乱から目をそむけないほうがいいよ
125デフォルトの名無しさん
垢版 |
2019/10/12(土) 20:22:58.57ID:BYtPECuz
>>85
>オブジェクト指向の定義はさておき、

ところで「チンボがシコシコする」という日本語表現は、文法的に正しいのか?

チンボ「を」シコシコするのではなくて、チンボ「が」シコシコする。この場合、「チンボ」は主語となる。

オブジェクト指向で言う「集約」は2種類あって、全体(俺)と部分(チンボ)が繋がっている場合と、
全体(俺)と部分(チンボ)が別々になっている場合とが考えられる。けれども「チンボ」はそれ自体
が独立した生き物であり、所有者の意思とは無関係に、勃起して「シコシコする」。
例えば寝てる時にエロい夢みて朝起きてみたらチンコが勃起して射精してたとか。

違うか?

「胸がドキドキする」は良いが、「チンボがシコシコする」はダメな理由を、50字以内で述べろ!
2019/10/12(土) 20:28:17.23ID:1JRUpTA+
>>125
それは興味深い考察ですね
ちんぽがシコシコするはダメなのですか?
127デフォルトの名無しさん
垢版 |
2019/10/12(土) 20:31:23.42ID:BYtPECuz
つまりオブジェクト指向とは、俺の股間に付いているモノなのである!

                                             
 .              ,                   ャ  ィE5!..             
 ..           ,,.e;〆            .、   w===|====!.     π .e、x&             
 ..          ^~ !      ``=    π     ,, カ. _    _ ̄オ⌒|! `ヘ                  
 .         fラ⌒ ̄l「~~~^.        ,.タ.     .ル .ll ~\_   〃 〃.  ^..                  
 .             .オ..      ,...__,xf~.      ^  f!  、               
 .            '^´         ̄ ̄..                                         
          ..                   l|..       r=キ'⌒..           
 .         `!、        ~~~~~~⌒...    l}                        
           ⌒heィ~.     .+s_、_e.     .^+--w=f   `ヲse、._ _、...     ′     

チンポは独立した生き物であり、本人の意思とは無関係に、自らの意思で勃起してシコシコする!
2019/10/12(土) 20:35:24.78ID:1JRUpTA+
質問に答えてください!
2019/10/12(土) 22:42:46.45ID:RvFyS8G3
人類の歴史を作ってきたのはおじさんだからな
おじさんの言うことを聞いていればだいたい間違いはないが、重大な間違いを犯すのもまたおじさん
130デフォルトの名無しさん
垢版 |
2019/10/12(土) 22:45:21.43ID:BYtPECuz
>>128
だからオブジェクト指向は俺の股間に付いているのだ!
2019/10/13(日) 03:57:42.23ID:3vnN9KRU
だからそれは、糞だってば おじぃちゃん
2019/10/13(日) 09:50:19.58ID:kfwaB+Y7
カプセル化って
中に有るものを見たり使ったり出来ないようにしないと意味が無い
getter,setterで使い捲くるのでは余り意味が無い(初期設定はしないといけないからsetterなりコンストラクタで設定する必要は有る)
それではグローバル変数となんら変わりは無い

ただそれをどうやればいいのか?
と聞かれるとセオリーや具体的な手法が存在していない

それがオブジェクト指向プログラミングが糞と言われてしまう原因になってる
現状では属人的に出来る人だけが使えるようになってしまっている
2019/10/13(日) 10:07:37.44ID:0tGtu6dL
>>132 の発言を自分がちゃんと理解しているか怪しいのだが...

> getter,setterで使い捲くるのでは余り意味が無い(初期設定はしないといけないからsetterなりコンストラクタで設定する必要は有る)
> それではグローバル変数となんら変わりは無い

んん?具体例がほしいな。
こういうこと?

class test{
private:
int x;
public:
int getX(){
return x;
}
void setX(int a){
x = a;
}


これってあんまり意味ねーよね?って話?
2019/10/13(日) 10:40:41.09ID:OhlF8Q6H
>>132
まーた間違ってる。

グローバル変数がなぜ悪かというと、プロジェクト全体から
読み書きできてしまうのでどこで参照してるかわからないから。
つまりスコープの範囲が広すぎるという問題。パブリックであることと何の関係もない。

それにカプセル化は、隠さなくて良いものまで隠せと言ってるわけじゃない。
隠すもの(内部構造)と隠さななくて良いもの(インターフェース)を
きっちりワケましょう、それによってメンテナンス性が上がりますという概念

すべて隠さなくていいオブジェクトだって存在する。それはそうするのが正しいので
カプセル化を破壊してることにはならない。隠すべき内部構造がないと言うだけ。
なんで隠してなければ、カプセル化破壊だと思うんだろうか?

getter,setterってまたJavaの話をしてるんだろうけど、
それはJavaという言語にカプセル化を実現するための機能が不足してるから
規約でカバーしてるだけ。他のオブジェクト指向言語であれば
お前の言うgetter,setterが無い言語もある。

お前がオブジェクト指向を理解してない=お前が糞なのであって
それをオブジェクト指向のせいにするな。
あと知識が狭すぎる。Javaしか知らないんだろ。
2019/10/13(日) 10:50:13.80ID:OAJhlsQO
俺も昔はグローバル変数についてそういう認識だったけど

そもそもスコープがどうであれ
ドキュメントに何もねぇ変数を把握する事自体
やってらんねぇよクソッタレって認識に変わった

本質はドキュメントに書いてないことが問題であって
スコープが仕様を形成するものであってはならない
2019/10/13(日) 10:57:17.16ID:OhlF8Q6H
>>135
イミフ。有名なオープンソースのコードを見て良いコードとは
コメントが書かれてないコードだと知ったほうが良いよ。
そんな物無くてもメンテナンスしやすいような構造になってる。
あとスコープが仕様を形成するなんて話は誰もしてない。
2019/10/13(日) 10:57:38.28ID:OhlF8Q6H
× コメントが書かれてない
○ コメントが重要なところにしか書かれてない
2019/10/13(日) 10:59:10.44ID:0tGtu6dL
コメントに頼らなくてもある程度理解できるコードと言いたいのでは?

コメントはあったらあったで助かるよ。
2019/10/13(日) 11:01:53.95ID:OAJhlsQO
>>136
バカじゃん
テメーが考えたコメントをソースに書いてんのか?

コメントってのは設計書の文言をコピペしてこそ意味があるんだよ
ソースにあるコメントで設計書を検索してヒットしない成果物いりませぇん
2019/10/13(日) 11:15:03.63ID:HooVs/ny
設計書に書いてあるなら、どこそこの設計書見れでいいじゃん
コピペ作業に金払わされてるとか、経営者が可哀想でならん
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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