- 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)
- 231 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 19:08:51 ID:QQ2hFNnS.net]
- いやもうお前らprivateとかprotectedとかいう言葉を使ってカプセル化を語るのやめたほうがいいよ
privateという機能がなくてもカプセル化は実現できるから 百歩譲ってデータ隠蔽だけをカプセル化と呼ぶにしても、privateのように外からのアクセスを不能にする機能がなくてもカプセル化は実現できるし
- 232 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 19:12:26 ID:fnCF+h71.net]
- >>224
そんな方法あるんだ、どうやってやるの?
- 233 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 19:34:06.00 ID:eLfJJdHb.net]
- >>222
オブジェクト指向でしか出来ないことがあるとでもw
- 234 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 19:47:03.28 ID:crXMwmqp.net]
- pimpleパターンくらいは知っとけよ。。
てかカプセル化について馬鹿みたいにこだわる奴でまともなインターフェイス設計できる奴見たことねーわ。 リファクタリングもしないで一発で正解にたどり着けるとでも考えてるんだろうな。
- 235 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 19:48:24.03 ID:SG/+b/+N.net]
- pimple 覚えた pimple ニキビ 覚えたpimple pimple
- 236 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 20:33:23.82 ID:QQ2hFNnS.net]
- オブジェクト思考言語アレルギーの老害は論外として
特定のオブジェクト指向言語を習得している人は無数にいても、 オブジェクト指向そのものを理解してる人は殆どいなそう
- 237 名前:デフォルトの名無しさん [2020/06/26(金) 20:37:52.02 ID:Op8/e6Io.net]
- >>229
それってオブジェクト指向という概念そのもの がおかしいものだからですよね? っていう議論をずっとしてるんですが 誰にでも理解出来て納得出来ることが正しい ことだと思うんですが
- 238 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 20:43:25.43 ID:ODDHilOW.net]
- > オブジェクト指向そのものを理解
どういうこと? アランケイがどう考えたとか OOPがどういう成り立ちだとか
- 239 名前:そういういこと? []
- [ここ壊れてます]
- 240 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 20:54:59.05 ID:0CWC8I0Q.net]
- アランケイが考えたオブジェクト指向は洗練され完成されたオブジェクト指向なのです。
初号機が最強であるのはどこの世界でも同じことです。 初期版が完成です。改良などありえません。
- 241 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 21:47:56.68 ID:ks+n8Bmz.net]
- 第一、privateサポートしてない言語なんて普通にあるしな。Javascriptなんてそうだし。
- 242 名前:223 mailto:sage [2020/06/26(金) 21:51:49.87 ID:ks+n8Bmz.net]
- あ、ID変わっちゃった。223です。
- 243 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 22:03:26.05 ID:TcIyIoqu.net]
- >>223
>カプセル化はクラス使用者にとって必要な機能やデータを公開し、その他内部実装を秘匿することで標準ライブラリの如く使いやすいクラスを作りましょうという実にシンプルなものなのにね。 カプセル化といった時に一般的な定義は2種類あってそれはそのうちの1つで情報隠蔽(Infomation Hiding)とほぼ同じ意味 もう一つはデータとそれを操作する関数/メソッドを一つの単位に束ねることを言う(隠蔽されてるかどうかは気にしない) 人によっては2つを合成した定義でカプセル化という言葉と使ってるので まともな議論をしたければどういう定義でカプセル化と言ってるのか確認する必要がある
- 244 名前:223 mailto:sage [2020/06/26(金) 22:20:46 ID:ks+n8Bmz.net]
- 自分が議論したいというよりは...
このスレ主と>>138みたいな謎方向の議論をする人の思うカプセル化について、そりゃ違うだろって言いたいだけ。 215への回答は聞かれたから答えただけで深い意味はない。
- 245 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 22:21:20 ID:0CWC8I0Q.net]
- >>235
違う違う。情報隠蔽のことをカプセル化と間違っていってる人がいるだけ カプセル化の定義は必要なものだけをインターフェースとして提供する 必要ないものは隠蔽するってことなんだが 全部必要だから公開しているのに、カプセル化されてない!って言うやつがいるだけ
- 246 名前:デフォルトの名無しさん [2020/06/26(金) 22:33:13 ID:Pmgb6tek.net]
- >>237
それが正しいという一次ソースあるん?
- 247 名前:デフォルトの名無しさん [2020/06/26(金) 22:33:39 ID:Pmgb6tek.net]
- ないんだったらそれあなたの感想ですよね
- 248 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 22:34:17 ID:TcIyIoqu.net]
- >>237
>カプセル化の定義は必要なものだけをインターフェースとして提供する >必要ないものは隠蔽するってことなんだが 情報隠蔽と何が違うの?
- 249 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 22:35:17 ID:0CWC8I0Q.net]
- >>240
情報隠蔽は、情報隠蔽しなければカプセル化じゃないって騒ぐが 必要なものだけを公開するなら、情報隠蔽しなくてもカプセル化
- 250 名前:223 mailto:sage [2020/06/26(金) 22:40:01 ID:ks+n8Bmz.net]
- 俺は...カプセル化の本質さえ抑えておけば、言葉としての違いは気にしないけどな。
privateにすること=カプセル化だと勘違いしていても、そいつがカプセル化の有り難みを理解できているのなら、深入りしないだけだよ。 言葉の定義にどこまで拘るかは議論の相手次第。 だが、staticおじさん、貴方は駄目だ。 俺のような細かいことを気にしないレベルの人間ですら駄目だわ。 昔からオブジェクト指向を批判し続けて初心者に誤解を与える老害だから見つけ次第、徹底的に叩く。
- 251 名前:デフォルトの名無しさん [2020/06/26(金) 22:42:23.17 ID:Pmgb6tek.net]
- オブジェクト指向を勉強してる意識高い系のアホが
引数も戻り値も使わず、全部インスタンス変数使ってる例を見て 僕はstaticおじさんになっちゃいそう
- 252 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 22:49:00.20 ID:TcIyIoqu.net]
- >>241
必要なものだけを公開するってことは 必要じゃないものは公開しない、つまり隠蔽しているんだから同じじゃない? “隠蔽”の捉え方が違うのかな
- 253 名前:デフォルトの名無しさん [2020/06/26(金) 22:50:30.87 ID:Pmgb6tek.net]
- 構造化プログラミングをできるようになって
データと関数をオブジェクトとしてまとめるともっと良いかもと オブジェクト指向を身につけるならいんだけど オブジェクト指向では名詞を抜き出すんだ そうやってオブジェクトを分ければ良いプログラムができあがるんだと オブジェクト指向に幻想抱いてるアホが作ったプログラムは手に負えん
- 254 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 22:50:54 ID:0CWC8I0Q.net]
- >>244
隠蔽を必須としてる、隠蔽のことだけをカプセル化と言ってるやつがいる それが間違いということ
- 255 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 22:51:29 ID:0CWC8I0Q.net]
- >>245
オブジェクト指向に幻想抱いてる天才が作ったプログラムなら手に負えるだろ?
- 256 名前:デフォルトの名無しさん [2020/06/26(金) 22:52:06 ID:Pmgb6tek.net]
- >>247
天才は幻想を抱かない
- 257 名前:デフォルトの名無しさん [2020/06/26(金) 22:52:57 ID:Pmgb6tek.net]
- 僕は天才だからわかる
僕のどこが天才なのかは説明できないけどわかって
- 258 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 22:53:19.24 ID:0CWC8I0Q.net]
- >>248
どうでもいいよw プログラムが手に負えるかどうかは、アホかどうかが焦点だろって話 お前が長々と書いてることに意味がない
- 259 名前:デフォルトの名無しさん [2020/06/26(金) 22:54:34.05 ID:Pmgb6tek.net]
- >>250
焦点はそこじゃない、どこみてんのよ! 構造化プログラミングの実装技術の先にオブジェクト指向があることを 理解してない人間をアホと言ってるんだよ、焦点はそっち
- 260 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 23:08:18.29 ID:0CWC8I0Q.net]
- >>251
だからオブジェクト指向自体には問題がないって言ってるんでしょ?
- 261 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 23:08:49.57 ID:0CWC8I0Q.net]
- 人の話と技術の話の区別ぐらいつけよう。
人をいくらアホだ馬鹿だと叩いても 技術を否定したことにはならない
- 262 名前:デフォルトの名無しさん [2020/06/26(金) 23:09:53.77 ID:Pmgb6tek.net]
- ListやStack、HTTP Clientといったものはオブジェクト指向と見事に調和するんだけど
それは変えられることがないから、これはこういう機能のものだってのが決まっていて システムの仕様が変わっても変更されることがない いっぽうでビジネスドメインにオブジェクト指向を適用しようとすると 仕様がころころ変わるから最初の設計ではうまくいかなくなることが多い 仕様が変わったらオブジェクトの設計もやり直せるならいんだけど 一度システムが動き出したら数万〜数億の人が影響受けるから なかなか変えられないのが実際のところ カプセル化されると困るというのはそういう状況の話じゃないかと僕は思いました ドメインの安定性によってオブジェクト指向の適否は左右されると天才の僕は提言します
- 263 名前:デフォルトの名無しさん [2020/06/26(金) 23:12:02.84 ID:Pmgb6tek.net]
- >>252
オブジェクト指向に幻想を抱くアホを作り出すオブジェクト指向の功罪は大きい 実装と離れて語られるオブジェクト指向は宗教と言っても良い
- 264 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 23:18:57.04 ID:0CWC8I0Q.net]
- >>255
お前がそうであってほしいと願ってるのはなぜ?w
- 265 名前:デフォルトの名無しさん [2020/06/26(金) 23:20:58.30 ID:Pmgb6tek.net]
- >>256
何いってんだお前
- 266 名前:デフォルトの名無しさん [2020/06/26(金) 23:21:20.47 ID:Pmgb6tek.net]
- 僕が願ってるのは世界平和だけ
- 267 名前:デフォルトの名無しさん [2020/06/26(金) 23:35:54.37 ID:n1YsnRgt.net]
- カプセル化するなら
一切ソースコードレビューしなくていいんだな 変数やメソッドの命名もインデントも全部 適当にやるからな 文句つけるならテストの結果だけで文句を言って くれよ、ソースコードには文句言うなよな。 例外をキャッチする必要もないな。 俺が利用するクラスで発生した問題はそのクラス内部の 責任だ。内部事情は意識しなくてもいいんだからな。 おっとロギングも内部事情だからやる必要ないな。 そんな事情は利用側は知りたくもないし結果だけが 欲しいんだもんな。 逆にこれらを押し付けるなら全部publicで問題ないよな。 クラスの内部を知りたいってことだからな。 「↑こいつはカプセル化が何なのかを理解してない。」 カプセル化おじさんがどうせこう言うだろうから先に 言っておいたわ。
- 268 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 23:45:57 ID:0CWC8I0Q.net]
- >>259
「↑こいつはカプセル化が何なのかを理解してない。」 いや、先に言っておくと言っても、俺も同じこと言うんだが、 それで言われることを予測していたんだろ? 反論までは用意してないの?
- 269 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 23:50:21 ID:ks+n8Bmz.net]
- 珍しくこの手のスレでは比較的、リアルな批判がでたかも。
汎用性の無いビジネスドメインをオブジェクト指向を意識しながらクラス化したところで、メリット薄いよね?って話はまぁ、理解できる。 でも、ビジネスドメインを構成するクラスを汎用性の高いクラスだけで構成させることができれば、大分スッキリする。 いや、ほんと、そこがオブジェクト指向信者の腕の見せ所なんだがな。 たぶん、ビジネスドメインの責務分割の仕方を誤って神クラスを作ってしまうパターンにはまってるのかも。
- 270 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 23:56:26.67 ID:ks+n8Bmz.net]
- でも、まぁ...開発者の立場次第にもよるのかも。
俺みたいに自社開発しているエンジニアだったら、利益を上げるレベルの品質を根拠にいくらでも納期を伸ばしてもらえるので、ド丁寧なオブジェクト指向プログラムを書く余裕があるけど、受託開発になると納期がギリギリに設定されがちだし(偏見?)、そんな最中、丁寧なコードなんて記述できるかって言われると...まぁ、どうなんだろうね。
- 271 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 23:58:23 ID:34AfLaws.net]
- 「状態によって挙動が変わる」ものが何十個も何百個も集まったら凡人には把握しきれない。
ましてや内部の状態が読み取りすらできないとなれば絶望的なことになるのバカでもわかる。 ウェブシステムや業務システムみたいにデータベースという巨大グローバル変数群を構造体にコピーしては書き戻すというのを繰り返すだけだと深い階層化が発生しないから問題は起きないんだろうね。
- 272 名前:デフォルトの名無しさん [2020/06/26(金) 23:59:12 ID:5Zl1C0wL.net]
- >>260
お前が俺の書いたことに反論してみろ お前が言う真のカプセル化とやらを説明しろ。
- 273 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 23:59:54 ID:TcIyIoqu.net]
- >>259
前半はコードの品質をどういう観点から担保するかという話 例外やロギングはどういう責務/役割をどこに持たせるかという話 どちらもオブジェクト指向特有のものではない
- 274 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 00:00:02 ID:ihk0yOtr.net]
- 問題が起きやすいのはハードウェアに近い低層と、ライブラリ層と、ビジネスロジック層なんかに分業している分野だろうね。
- 275 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 00:05:48.57 ID:n2G2JMaM.net]
- >>261
お前の主張の最大のメリットであるスッキリがお前の主観でしかない そもそも設計書とソースの構造を一致させるための設計技術ではないのかな?
- 276 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 00:09:26.27 ID:ihk0yOtr.net]
- データベースを使っているようなシステムはまず深い階層化は起きない。
RDBと階層化は相性が悪いからね。 それなのに深い階層化を使っている気分になっている人が多い。 ハードウェア制御絡みの本当に深い階層化を経験している人とは住んでいる世界が違う。 だから話が噛み合わない。
- 277 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 00:31:59 ID:npRplKHX.net]
- みんな難しく考えすぎw
オブジェクト指向はインテリセンスが効くんで便利 それで納得しろよ これがないとダルいだろ
- 278 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 00:33:18 ID:0UrSdNRf.net]
- >>267
> お前の主張の最大のメリットであるスッキリがお前の主観でしかない 事実を主観でしかないと批判されましても困るね。 実際、汎用性の高いクラス...それこそ、listやstack、http cliant並みに汎用性の高いクラスだけでプログラムが書かれてたらスッキリするだろ。 代替案があるなら、どうぞ。 > そもそも設計書とソースの構造を一致させるための設計技術ではないのかな? 何の話?
- 279 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 00:47:38 ID:eG65KKvD.net]
- スッキリって何?コードが短くなるの?
頭悪いから50行以上は読めないんだけど
- 280 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 00:51:39 ID:n2G2JMaM.net]
- >>270
いや、スッキリの定義は? 俺が見たらねっとりしてることない?
- 281 名前:デフォルトの名無しさん mailto:age [2020/06/27(土) 00:53:32.69 ID:kHv6hhb8.net]
- >>263
その深い階層を扱うのはC言語でしょう? C言語はオブジェクト指向です!
- 282 名前:デフォルトの名無しさん mailto:age [2020/06/27(土) 01:
]
- [ここ壊れてます]
- 283 名前:02:58.36 ID:kHv6hhb8.net mailto: >>261
ドメインが安定してるところはオブジェクトを作って ゆるふわなところは骨組みメソッド作る感じ? それなら僕と同じです [] - [ここ壊れてます]
- 284 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 01:03:48.38 ID:0UrSdNRf.net]
- いや、普通にOOPのコードだけど...。
逆に、list,stack並みに...で、なぜ伝わらない。 当たり前すぎて伝わらなかったのか、初めて聞いた単語だから伝わらなかったのか。 このスレの連中だと高低差激しすぎてコミュニケーションが難しいな。
- 285 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 01:04:44.30 ID:0UrSdNRf.net]
- >>274
あっ、はい。そうです。
- 286 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 01:08:16.33 ID:0UrSdNRf.net]
- >>274
強いて言うのなら、ドメインが安定しているところに見える範囲がオブジェクト指向信者とオブジェクト指向使いとstaticおじさんで、どれくらい違うのかな
- 287 名前:って感じですが。 []
- [ここ壊れてます]
- 288 名前:デフォルトの名無しさん mailto:age [2020/06/27(土) 01:11:06.46 ID:kHv6hhb8.net]
- こうなるんだったらもっとこういうオブジェクトにすれば
良かったと思うことがザラにある 今最高にきれいでも未来の仕様変更でど汚くなることもある いま汚くても未来の仕様変更がきれいにできることもある その見極め方が僕には未だにわからない
- 289 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 01:11:51.83 ID:F7GoDPAy.net]
- >>269
いや動的になる分、効きづらくなるだろばか。 それでもモジュール切り離しの視点で良いこともあるってのがオブジェクト指向の旨みなわけだが。 依存逆転のモジュール構造が作りやすいってだけの話なのにバカが変な哲学持ち出すから カスみたいな輩がお前はわかってない、俺が真の意味を理解してるとか言い出すわけだよ。
- 290 名前:デフォルトの名無しさん mailto:age [2020/06/27(土) 01:20:22.14 ID:kHv6hhb8.net]
- 依存性を逆転させて良いことがあるっていうんですか!?
- 291 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 01:27:34.87 ID:BNc+T5Ob.net]
- 1万行超えてもスクロールして作業するのか?
- 292 名前:デフォルトの名無しさん mailto:age [2020/06/27(土) 01:28:03.05 ID:kHv6hhb8.net]
- 業務で扱うようなある程度複雑な仕様をどう設計して実装するか
みんなでプログラミングして比較してみたいねー
- 293 名前:デフォルトの名無しさん mailto:age [2020/06/27(土) 01:31:55.47 ID:kHv6hhb8.net]
- >>281
内容によるんじゃないかな みっちりコントロールフローが1万行あったら嫌だけど 御経がほとんどを占めてたらわかるだろうし徳が高まりそう
- 294 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 02:14:37 ID:n/FbqQvh.net]
- >>282
業務というのはIBM(International Business Machines )より パンチングカードの集計から始まっているので 主にアンケート調査結果や在庫管理プログラム の設計ということになるだろう
- 295 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 06:21:43.43 ID:pgI/H4Wp.net]
- >>282
業務に限らず、OOPに限らず そもそもはそれが問題なんよ 複雑さそのものが ある程度以上複雑なモンは人類にはムリなんよ それが人類とプログラミングの関係なんよ サンプルプログラムや学校の課題書いたり 趣味で小さいの書いてる連中と ある程度以上複雑なモンを書いてる連中とはまずそこからして 想定してるもんが違いすぎる
- 296 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 07:01:10 ID:U90iCGW6.net]
- >>285
きっと>>282は 小さな趣味プログラムでも大きな業務プログラムでも ほらね、カプセル化したコーディングだとあーだこーだ だからいったじゃん 「カプセル化は絶対にやめろ!」 という結論にもっていきたいだけだお
- 297 名前:デフォルトの名無しさん [2020/06/27(土) 07:42:28.66 ID:e0+LQFD/.net]
- 「オブジェクト指向は高度で複雑な事をやる技術者
だけが恩恵を受けられるもので簡単なシステム 書いてるような凡人プログラマは恩恵を 感じにくい。」 だったら入門書でそんなもの教えるな 初心者プログラマにソケット通信や システムコールやカーネルみたいな話を いきなり教えるんか?
- 298 名前:デフォルトの名無しさん [2020/06/27(土) 07:44:28.06 ID:e0+LQFD/.net]
- 凡人にとってオブジェクト指向は
邪魔でしかないんだよ。 高度な技術者の勝手な利便性を 凡人に押し付けるな。 凡人の方が大多数なんだよ。
- 299 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 07:54:23.66 ID:BNc+T5Ob.net]
- 何でプログラムやってるんだ?
もっと簡単なことがあるだろ
- 300 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 08:29:03.79 ID:0UrSdNRf.net]
- >>286
どうだろ。 staticおじさん(「オブジェクト指向ってしっくりこないんです」の記事を書いて炎上、詭弁を重ねて意固地にstaticを薦めた有名な老害)じゃないのなら、まだ、大丈夫なんじゃね?
- 301 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 08:38:52.96 ID:0UrSdNRf.net]
- それ以前に、カプセル化は絶対駄目の結論に持っていこうとしているのか?
日が変わるとID変わるから、誰が誰だかよくわからなくなってきた...。
- 302 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 09:43:50.27 ID:8YCrt6Qf.net]
- 何事も程度次第
ただ丁度良い程度を知るのは少数の天性のセンス持ちだけで 凡人には理解できなかったり極端に走ったりする 俺は凡人とセンス持ちの間、というか凡人の域を超えられないのかなあ プログラム書くたびにどの程度で済ませるか、いつも迷ってる
- 303 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 10:00:13.69 ID:pgI/H4Wp.net]
- OOP批判の大半はクラス設計の難しさによる
OOPによってもたらされたクラスライブラリが 十分に使いやすいのに対して 自分でクラスやインタフェースを作ろうとしたとき 納得の行かない結果になる 問題の切り分けが出来ず 再利用性のある単位ぴったりにフォーカスできず 一緒にあるべきものを別にしたり 別にあるべきものを一緒にしたり 縦に割る物を横に割ろうとしたり いろんな判断をあやまった結果 最後に、クラス設計が悪いのではなくてOOPそのものが悪いと断ずる
- 304 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 10:09:46.57 ID:twDHZDh4.net]
- >>287
別に初心者だってオブジェクト指向の恩恵は受けられるだろう。良くあるコンテナや文字列とかの基本的なものだってオブジェクト指向的なものだし。 それに初心者の内からオブジェクト指向について知っておく、慣れておくことは重要だろう。 世の中の便利なライブラリやフレームワーク等の多くはオブジェクト指向で作られているからそれを使えるようになるために必要。 自分で設計するのも初めは難しいが、理屈や理論を学びながら実例に触れ、試行錯誤しながら徐々に慣れていく。 何より、初心者だからとオブジェクト指向をまったく触れずに手続き型のみで経験を積んで、ある程度自分なりのノウハウや経験論を身に付けてから別のパラダイムを取り入れようとすると、中にはアレルギー反応を起こして適応できなくなってしまう人もごく稀にいるから。
- 305 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 10:47:57.21 ID:n2G2JMaM.net]
- 長い上に全く中身がないな
スッキリ以上のオブジェクト指向のメリットは出てないからね これで技術者やってるつもりなんだから早く死ねよ
- 306 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 11:57:57.12 ID:0UrSdNRf.net]
- >>295
お前の無駄口程、無駄な発言は無いけどな。
- 307 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 12:40:58.84 ID:ut+wnsgT.net]
- カプセル化って別に外部からのアクセスを不能にすることじゃないよ
外部から『直接的』にアクセスさせることを避けて、そのかわり外部向けにわかりやすい何かを提供すること 現実のカプセルのように、扱いにくいものを隠して扱いやすく提供すること 別にカプセル化してもリフレクションやその他諸々で遠回りなアクセスが可能なこともある カプセル化ってのはかなり意味の広い言葉で、「臭いものに蓋」みたいなこと全般をカプセル化と呼ぶ 極端な例だと、関数にわかりやすい名前をつけることで関数内部を見なくて済むようにすることもカプセル化と呼ぶ
- 308 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 12:43:14.13 ID:npRplKHX.net]
- >>288
いやいや兵隊がよくわからないのに使えるするのが オブジェクト指向の利点の一つだろ つかそれができないなら オブジェクト指向にする意義がない まあ兵隊がよくわからないのに 使えるぐらいのオブジェクト指向ができるなら、設計した本人たちは そもそもオブジェクト指向にしなくても出来ちゃうって逆説はあるわな
- 309 名前:デフォルトの名無しさん [2020/06/27(土) 13:14:49.52 ID:e0+LQFD/.net]
- >>293
その通りだと思う オブジェクト指向で作られたOSSの、ライブラリは とても便利だし、役に立つと思う。 なら初心者や凡人へはクラスをインポートして使い方 のみを教えるべきで、クラスの作り方なんて 教えない方が親切だと思う 正直、自分でクラスなんて作りたくないし 組織内のメンバーが作成したローカル内の クラスなんて利用や継承したくないし 自分が作ったクラスを誰かに利用して 欲しくない、使い捨てで十分。 再利用性は以前自分が書いたコードを複製 して微修正すればいいよ、 自分が書いたコードだから修正箇所は 把握して
- 310 名前:る。
JavaScriptやpyみたいな言語はオブジェクト指向 導入してるけどクラスの作成は必須じゃない だけどJavaみたいな静的言語はクラスの作成が 必須になってる。ここがおかしいと思う。 クラス作ること強制してる言語仕様やフレームワークは おかしいと思う。 [] - [ここ壊れてます]
- 311 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 13:26:54.01 ID:eG65KKvD.net]
- 再利用しない前提ならそりゃ無用の長物だわな
- 312 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 13:45:44.90 ID:ssxfEnBq.net]
- そして再利用しようとすると微妙に仕様が変わって結局中身を改造しないといけなくなる罠。
汎用的なパーツ以外はクラス化すると余計手間かかるな。
- 313 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 13:51:13.06 ID:eG65KKvD.net]
- なんというかprivate云々とかそういう次元の話じゃないよねこれ
なんか脱力した
- 314 名前:デフォルトの名無しさん [2020/06/27(土) 13:56:46.31 ID:kHv6hhb8.net]
- 再利用しなくてもテストしやすくなったりするからオブジェクトは素敵な概念だと思うよ
- 315 名前:デフォルトの名無しさん [2020/06/27(土) 13:58:08.98 ID:kHv6hhb8.net]
- 修正が必要になったとき、それを使う側に影響を与えないっていう性質があっていっぱいちゅき
- 316 名前:デフォルトの名無しさん [2020/06/27(土) 13:58:50.41 ID:kHv6hhb8.net]
- まあ修正の程度にもよるんですけどね!(げきおこ
- 317 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 14:06:34 ID:UiFDXh57.net]
- JavaをdisるJava全否定のスレッドなのね
- 318 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 14:13:22 ID:UrcM2fcl.net]
- このスレタイの主張、可能なら複数の言語で、
オブジェクト指向で書かれたそれなりの量のコードを、 それより機能的で保守性があって行数も少なくて万人が読みやすいようにリファクタリングするとかして証明して欲しいなあ それがプログラマの矜持ってもんだと思う コードで語れってね
- 319 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 14:22:56.55 ID:Z/pHF8i9.net]
- >>273
カプセル化はC言語でもできる。
- 320 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 14:23:12.65 ID:1p1mL4Jd.net]
- バカなやつほど長文で演説した挙げ句オブジェクト指向のメリットをスッキリ以上のモノを挙げられない
レスしにくるなよ惨めだから
- 321 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 14:26:38.74 ID:Z/pHF8i9.net]
- >>282
一般的な業務システムはデータベースに出し入れするだけだから深い階層構造にはならない。 データベースに出し入れする際の受け皿となる構造体が1層あるくらいだろ。 そもそもRDBは階層構造そのままぶち込めないし。
- 322 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 14:34:40.99 ID:Z/pHF8i9.net]
- >>307
最近流行りのPythonで作られたシステムを見て回れば? カプセル化は言語仕様で禁止されてるから強制的に>>1の言うとおりに作るしかない。
- 323 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 14:37:58 ID:Z/pHF8i9.net]
- >>307
というか最初の開発で問題になるようなことではないからソースコードでは比較できないでしょ。 機能追加・改修案件で発生する問題の話だし。
- 324 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 14:50:29.02 ID:1p1mL4Jd.net]
- 初めに赤字が出たら続きはねーよw
- 325 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 15:01:24.90 ID:Z/pHF8i9.net]
- これオブジェクト指向の善し悪しじゃないよね。
改修発生時に雲の上で決まった無茶な追加仕様にどれだけ耐えられる構造にできるかという話だ。 ただオブジェクト指向は昔ながらの教科書どおりにやると耐えられない構造になりがち。 もちろんオブジェクト指向でなくても発生する。 C言語でも発生する。 そうならないようコーディングの約束事を決めよう。 そうなってないかコードレビューはしっかりやろう。
- 326 名前:デフォルトの名無しさん [2020/06/27(土) 15:03:08.36 ID:kHv6hhb8.net]
- >>311
へーPythonにはアクセス修飾子がないんだ知らなかった 命名規則でこれはprivateなものだよと示すわけね JavaScriptみたい
- 327 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 15:04:29.05 ID:qJyof1ZF.net]
- >>311
>カプセル化は言語仕様で禁止されてるから ソースは?
- 328 名前:デフォルトの名無しさん [2020/06/27(土) 15:09:38.92 ID:kHv6hhb8.net]
- Pythonにアクセス修飾子がないことはググればわかるじゃん
- 329 名前:デフォルトの名無しさん [2020/06/27(土) 15:09:51.10 ID:kHv6hhb8.net]
- ソースは僕だ!
- 330 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 15:10:07.03 ID:Z/pHF8i9.net]
- >>316
https://www.python.org/downloads/source/
- 331 名前:デフォルトの名無しさん [2020/06/27(土) 15:10:51.38 ID:kHv6hhb8.net]
- マヨネーズの君とソースの僕
|

|