- 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)
- 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]
- マヨネーズの君とソースの僕
- 332 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 15:12:52.88 ID:qJyof1ZF.net]
- >>310
構造体が別の構造体を参照してる
- 333 名前:データ構造は階層構造とは呼ばないということかな?
階層構造の深さがカプセル化やオブジェクト指向と何の関係があるの? [] - [ここ壊れてます]
- 334 名前:デフォルトの名無しさん [2020/06/27(土) 15:13:38.77 ID:kHv6hhb8.net]
- そう言えば日本の業務形態には貧血ドメインの方がよく適合するなんて話があったなあ
貧血って言うと悪い印象があるからシンドメインとかスリムドメインに言い換えて スリムドメインの方が優れてるんだって風潮がそろそろ出てきても良いと思う
- 335 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 15:14:18.21 ID:qJyof1ZF.net]
- >>317
“アクセス修飾子がない” == “カプセル化が言語仕様で禁止されてる” => False
- 336 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 15:15:51.79 ID:Z/pHF8i9.net]
- >>321
それただのポインタだろ
- 337 名前:デフォルトの名無しさん [2020/06/27(土) 15:18:13.32 ID:e0+LQFD/.net]
- そもそも、一昔前ならソフトウェアは
製品化して値段を付けて売るって考えがあったから 保守や仕様変更の影響範囲について関心が高かった。 だからオブジェクト指向は必要だったかもしれない だが現在ではソフトウェアは基本無料が当たり前だし プロジェクト依頼元の依頼を受けてオーダーメイドで システムを作るから依頼元だけが金を払ってくれるの であって あとはスマホアプリを無料配布して そのアプリで課金してもらって金を稼ぐみたいな 稼ぎ方だから、ソフトウェア自体に売却する価値はない。 売却する資産価値がないからオブジェクト指向で 保守する価値がない、使い捨てにすればいい。 実際、スマホアプリとかのほとんどが軽微なバグ とか沢山潜んだままリリースされていて、ずっと 放置されてたりするじゃん。
- 338 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 15:19:44.46 ID:Z/pHF8i9.net]
- >>321
ポインタは横の繋がり 上下関係ではない 深い階層化というのは、雲の上で決まった仕様に底辺開発者は意見できないということ。 深い階層化というのは、底辺開発者が受けてるパワハラなど雲の上は知らないということ。
- 339 名前:デフォルトの名無しさん [2020/06/27(土) 15:20:21.12 ID:kHv6hhb8.net]
- >>323
では君と僕のカプセル化の定義が異なるだけじゃん 君のカプセル化の定義で僕が言ってることを解釈するからFalseになる 僕が言ってることは僕の定義で解釈したらTrueになる アクセス修飾子が存在することをカプセル化可能と定義します よろしくおねがいします
- 340 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 15:23:36.87 ID:qJyof1ZF.net]
- >>327
“カプセル化可能” == “言語仕様でカプセル化を禁止している” #=> False
- 341 名前:デフォルトの名無しさん [2020/06/27(土) 15:25:23.02 ID:kHv6hhb8.net]
- >>328
だからさー君のカプセル化の定義を知らないしそれを言ってもらわないことには 真偽値だけ言われても僕どうしたらいいかわからないよーえーん(T_T)
- 342 名前:デフォルトの名無しさん [2020/06/27(土) 15:26:25.05 ID:kHv6hhb8.net]
- カプセル化とはアクセス修飾子でprivateにできることを言います
- 343 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 15:28:46.34 ID:UrcM2fcl.net]
- 本当に?
- 344 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 15:31:32.87 ID:qJyof1ZF.net]
- >>326
>>310 >一般的な業務システムはデータベースに出し入れするだけだから深い階層構造にはならない。 このレスに書いてる”階層構造”の定義を聞いてるに 全く違う”階層化”の話を出されても困る 特に考えてなかったんなら別にそれで構わない
- 345 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 15:32:44.69 ID:qJyof1ZF.net]
- >>328
バグってた “カプセル化不可能” == “言語仕様でカプセル化を禁止している” #=> False
- 346 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 15:40:51.44 ID:Z/pHF8i9.net]
- >>332
データベースで深い階層化が起こるとすれば、 ・データベースの出し入れはストアドプロシージャ経由のみ ・誰かが作ったストアドプロシージャを叩くライブラリ ・末端開発者が見えるのはライブラリのみ という状況
- 347 名前:デフォルトの名無しさん [2020/06/27(土) 15:45:38.60 ID:kHv6hhb8.net]
- >>331
ホントっす
- 348 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 15:46:26.65 ID:ut+wnsgT.net]
- ちがうよ
- 349 名前:デフォルトの名無しさん [2020/06/27(土) 15:46:32.04 ID:kHv6hhb8.net]
- >>333
なんでFalseになるか説明できる? できないんだったら君は間違ってる
- 350 名前:デフォルトの名無しさん [2020/06/27(土) 15:47:10.15 ID:kHv6hhb8.net]
- >>336
何が違うんですか!?なんでですか?説明してください!
- 351 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 15:47:49 ID:UrcM2fcl.net]
- 内包してない?
- 352 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 15:48:03 ID:ut+wnsgT.net]
- >>338
定義が違うから説明しろと言われても困る
- 353 名前:デフォルトの名無しさん [2020/06/27(土) 15:48:32 ID:kHv6hhb8.net]
- >>340
説明くらいできるだろハゲ、横着すんな
- 354 名前:デフォルトの名無しさん [2020/06/27(土) 15:48:33 ID:PPBVSkWl.net]
- ぬるぽ
- 355 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 15:52:34 ID:ut+wnsgT.net]
- >>341
>>294
- 356 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 15:53:17 ID:ut+wnsgT.net]
- >>341
安価ミス >>297
- 357 名前:デフォルトの名無しさん [2020/06/27(土) 15:53:25 ID:kHv6hhb8.net]
- >>343
なるほどね、アレルギーが、そういうことね
- 358 名前:デフォルトの名無しさん [2020/06/27(土) 15:53:46 ID:kHv6hhb8.net]
- 恥かいた
- 359 名前:デフォルトの名無しさん [2020/06/27(土) 15:54:37 ID:kHv6hhb8.net]
- 安価ミスってんじゃないよ!!
納得した僕が馬鹿みたいでしょうが!!
- 360 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 15:55:00 ID:ut+wnsgT.net]
- 馬鹿なんじゃないの?
- 361 名前:デフォルトの名無しさん [2020/06/27(土) 15:56:18 ID:e0+LQFD/.net]
- ああもうめちゃくちゃだよ!
- 362 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 16:01:21 ID:7UzCd1n0.net]
- 何やってんだおめーら。
そのへんでやめとき。
- 363 名前:デフォルトの名無しさん [2020/06/27(土) 16:02:43 ID:kHv6hhb8.net]
- カプセル化には強度があります。
C言語のヘッダやJavaのprivateといった言語機能として カプセル化できることを強カプセル化と言います JavaScriptやPythonのように命名規則によって使用者に 知らせるカプセル化のことを弱カプセル化と言うのです。 >>348 僕のこと見直してくれてもいいです
- 364 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 17:08:00.05 ID:WDOSBdwF.net]
- カプセル化こそ
すでに時代遅れだったんじゃねーの?
- 365 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 17:38:28.03 ID:ut+wnsgT.net]
- >>351
頭悪そう
- 366 名前:デフォルトの名無しさん [2020/06/27(土) 17:59:51.27 ID:kHv6hhb8.net]
- >>353
嘘つき!
- 367 名前:デフォルトの名無しさん [2020/06/27(土) 18:27:35.27 ID:e0+LQFD/.net]
- >>351
これまでの話を統合した結論として、 いまはgitなどバージョン管理差分確認ツールや エディタやIDEの機能が充実してるから 言語機能でカプセル化して 「内部を意識しない」ように隠蔽したり制限するのではなく 開発ツールを駆使して内部を意識はするけど ソースの仕様変更切り替えに対応しやすくなっている やり方が主流 開発ツール進化によりカプセル化はその役割を終えた。 継承や抽象クラスやオーバーライドも非推奨 これをやると同じ名前のメソッドが沢山あって IDEによるプロジェクト内キーワード全文検索を 阻害するから
- 368 名前:デフォルトの名無しさん [2020/06/27(土) 18:38:03.92 ID:kHv6hhb8.net]
- >>355
カプセル化しなかったら仕様変更がしやすいのか、なるほど
- 369 名前:デフォルトの名無しさん [2020/06/27(土) 18:45:55.84 ID:e0+LQFD/.net]
- >>356
読解を間違えています カプセル化をしないことで仕様変更しやすくなるのではなく カプセル化を「しなくても」代わりに 開発ツールが充実してるから ブランチ切り替えや差分確認でスマートな 仕様変更と仕様切り替えが可能です。 だからカプセル化はもう不要になりました。
- 370 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 18:50:33.85 ID:UrcM2fcl.net]
- それはカプセル化の使用有無に関係ないのでは
- 371 名前:デフォルトの名無しさん [2020/06/27(土) 18:52:34.90 ID:kHv6hhb8.net]
- >>357
カプセル化せずに発生するオブジェクトを破壊するような変更を 差分確認で見つけ出せるわけですね、差分確認が重要ですね
- 372 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 18:54:31.03 ID:twDHZDh4.net]
- >>355
×これまでの話を統合した結論として ◯これまでの話はすっ飛ばしてボクの言いたいことだけを言うと
- 373 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 19:01:29.07 ID:7UzCd1n0.net]
- IDEの助けがあるとは言え、grepした時の重複は勘弁して欲しい。
どれやねんっていつも思う。 本当にOOPってメンテしやすいんだろうか?
- 374 名前:デフォルトの名無しさん [2020/06/27(土) 19:03:28.66 ID:kHv6hhb8.net]
- わかりました、grepを禁止します!
- 375 名前:デフォルトの名無しさん [2020/06/27(土) 19:07:51.73 ID:kHv6hhb8.net]
- 世界的超人気言語はC言語、Java、Pythonと変遷していってるわけだけれども
たしかにカプセル化の機能は時代とともに弱まってるように見える
- 376 名前:デフォルトの名無しさん [2020/06/27(土) 19:10:52.99 ID:e0+LQFD/.net]
- >>359
そのオブジェクト破壊って一体何を意味してる? 多少オブジェクトが破壊されたところで アプリは動くし すぐバグになる訳じゃないだろう。 多少経験あるプログラマなら知らないオブジェクトへの 破壊的代入は軽率にはやらないだろうし、 オブジェクトのバックアップ変数作ったり少し考えれば それくらいやるだろう。 やる時はどうしてもやる時はそうせざるを得ないからやる訳で 破壊するのにもそれなりの理由があるんだよ。 それをprivateとかprotectedするなんて余計なお節介 もいいところ そして、そういう操作の是非は gitでコードレビューできるだろ。
- 377 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 19:13:53.12 ID:npRplKHX.net]
- カプセル化って一種の安全装置なわけだし、作業性とはトレードオフに
なるわな どちらかを選択するなら当然安全装置を選択するが
- 378 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 19:26:08.84 ID:D2Sdnpa5.net]
- 使い捨てだの再利用しないだの
素晴らしい含蓄をみずほレベルの巨大案件に適用してれば歴史が変わっていたかも知れない
- 379 名前:デフォルトの名無しさん [2020/06/27(土) 19:29:44.84 ID:kHv6hhb8.net]
- >>364
Javaでいうところのprivateやprotectedの値を書き換えたり参照したりといったことを オブジェクトの破壊と言ってます コードレビューできるっていうのはそれをやらないと洗い出せないってことでしょ カプセル化の機能を使っていれば実装時に気付けることをレビューまで先延ばしにすることによって 得られることがそんなに多いのですかね
- 380 名前:デフォルトの名無しさん [2020/06/27(土) 19:37:50.49 ID:kHv6hhb8.net]
- たとえばこの先Pythonが、名前が_から始まるメンバに外からアクセスすると
構文エラーになるようになった場合、動作するプログラムにカプセル化を破壊するような 操作がないことは明白になるのでとても便利だと思います
- 381 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 19:42:29.28 ID:npRplKHX.net]
- Pythonぐらいの緩さが一番バランスいい気がする
人気があるのも納得
- 382 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 19:44:24.05 ID:7UzCd1n0.net]
- >>368
dart的な感じ?
- 383 名前:デフォルトの名無しさん [2020/06/27(土) 19:50:55.69 ID:kHv6hhb8.net]
- >>370
そうです、そのdart的な感じです dartを使ったことがないので僕は知りませんけど
- 384 名前:デフォルトの名無しさん [2020/06/27(土) 19:53:28.59 ID:kHv6hhb8.net]
- アクセス修飾子でアクセス制限をかけてしまうと
テストすることさえできなくなります これがカプセル化の圧倒的な弱点です
- 385 名前:デフォルトの名無しさん [2020/06/27(土) 19:55:33.60 ID:kHv6hhb8.net]
- privateではありつつもテスト時などにアクセス可能なバックドアが必要で、それが現代のプログラミング言語には欠けていると思います
- 386 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 20:15:27.61 ID:7UzCd1n0.net]
- >>373
そのへんJavaとかリフレクション駆使して回避してるので構造的、致命的な欠点とは言い切れないと思うよ。 リフレクションがバックドアと言われたらそれはその通りなので反論できないけど。
- 387 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 20:17:13.10 ID:mehAi5n4.net]
- グローバル変数使用禁止の
public staticが唯一無二の解決策だというのにわからん奴がいるな
- 388 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 20:34:22.57 ID:gS37C1rZ.net]
- >>373
テストでアクセスするならそれはpublicにすべきもの 言い換えると、テストですらアクセスしないものをprivateにする
- 389 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 20:35:14.22 ID:gS37C1rZ.net]
- >>372
テストするならpublicにすればいいだけ
- 390 名前:デフォルトの名無しさん [2020/06/27(土) 20:39:11.40 ID:e0+LQFD/.net]
- まず重要な前提として
システムの仕様変更というのは appのソースコードの変更だけではない。 データベースの変更や接続してる外部サーバや ストレージに関連する仕様変更とかもある。 そして、カプセル化を初めとするオブジェクト指向の 設計技法はメモリ内の瞬間的なごく狭い範囲の 事しか考えてない。 外部環境の仕様が変わったり、フェイルオーバーなどの 不具合が起きてシステム全体のデバッグしたり 不具合調査するときに、app層がカプセル化されていたり オブジェクト指向の技法が使われているほど それらが邪魔になってやりにくくなるのは 想像に難くないと思う。 仮想化やクラウド化が進んでる最近では こういう外部環境の隠蔽は逆に困るんだよ。
- 391 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 20:46:30.95 ID:npRplKHX.net]
- >>378
オブジェクト指向の技法が使われているほど それらが邪魔になってやりにくくなるのは 逆説的だがこれが利点の一つなんだ 手続き型だと 直したつもりになることが多々あり 新たなバクを生む 時間が多少かかっても形式的に処理するべき
- 392 名前:デフォルトの名無しさん [2020/06/27(土) 20:59:08.97 ID:kHv6hhb8.net]
- >>376
それはないわー テストは全メソッドやるでしょ 全部publicにしなければいけないなんて間違ってると思います! 僕はそれ間違ってると思います!
- 393 名前:デフォルトの名無しさん [2020/06/27(土) 21:00:30.56 ID:kHv6hhb8.net]
- >>377
publicにしたら別のオブジェクトからアクセスされちゃうじゃん そのメソッドは内部の状態と深い関わりがあって勝手に呼ばれると困っちゃうの みたいなことあるじゃんテストのときだけpublicにするのはヤリマンだし
- 394 名前:デフォルトの名無しさん [2020/06/27(土) 21:03:21.73 ID:kHv6hhb8.net]
- テストを別オブジェクトにするのが間違ってるのかもわからんね
データと関数をセットにしたものをオブジェクトと呼ぶように データと関数とテストをセットにした自己メンテナンス完結型のものをアクターと呼ぶことにしようよ!
- 395 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 21:13:44.71 ID:gS37C1rZ.net]
- >>380
> テストは全メソッドやるでしょ 全メソッドやるかどうかはその人次第 テストするならpublicにする それだけの話 テストするということは、そのインターフェースは 外部から使用しても良いということを意味する テストされてるんだから仕様が変わったりしない
- 396 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 21:14:19.20 ID:gS37C1rZ.net]
- >>381
> publicにしたら別のオブジェクトからアクセスされちゃうじゃん アクセスしても問題ないだろ? アクセスしても問題ないようにテストしてるんだから
- 397 名前:デフォルトの名無しさん [2020/06/27(土) 21:32:11.55 ID:kHv6hhb8.net]
- >>384
いやいや、公開する必要のないメソッドを公開する意味がない 呼ばれちゃいけないタイミングはある、テストしてるかどうかとは関係ない テストしてないコードはバグってるよ 人の問題で片付けてはいけない
- 398 名前:デフォルトの名無しさん [2020/06/27(土) 21:33:25.71 ID:kHv6hhb8.net]
- テストやるときって前提となる状態を作ってからやるじゃん
公開して自由にアクセスできたら前提が成り立たない状態でアクセスされちゃうじゃん テストエアプかい?
- 399 名前:デフォルトの名無しさん [2020/06/27(土) 21:34:14.35 ID:kHv6hhb8.net]
- ちなみにだけど僕は自動化テストは書いたことがない
書いたことないけど僕はテストにすごく詳しいんだ、わからないことがあったら聞いて
- 400 名前:デフォルトの名無しさん [2020/06/27(土) 21:36:38.34 ID:kHv6hhb8.net]
- privateなメソッドにテストが必要ないと思ってる人がいるのが僕は不思議
むしろprivateなメソッドこそテストするべきでpublicなメソッドはただのインターフェース
- 401 名前:デフォルトの名無しさん [2020/06/27(土) 21:38:48.09 ID:kHv6hhb8.net]
- privateなメソッドにロジックが書かれていてそのテストを内包してるオブジェクトのことをアクターと呼ぶことにしようか
- 402 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 21:45:24.83 ID:OC6QjUii.net]
- publicにしたからと言って緩和するだけで結局状態の保持をされて意味不明な動作をするところは変わらんで
staticおじさんの言うことを聞きなさい
- 403 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 22:12:18.34 ID:gS37C1rZ.net]
- >>385
> いやいや、公開する必要のないメソッドを公開する意味がない テストするのだから公開する必要があるだろ なにいってんだおめぇ
- 404 名前:デフォルトの名無しさん [2020/06/27(土) 22:15:42.36 ID:kHv6hhb8.net]
- >>391
お前が何いってんだハゲ privateだとテストできないのが困るのよねえと言ってんだろうが
- 405 名前:デフォルトの名無しさん [2020/06/27(土) 22:16:57.07 ID:kHv6hhb8.net]
- テストエアプか?
テストのためだけにpublicにするなんてありえない
- 406 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 22:18:03.01 ID:pxtmQ7+k.net]
- >>393
じゃあ、どうすんだよ って聞いてみたい
- 407 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 22:19:08.38 ID:UrcM2fcl.net]
- 外部からアクセスするテストをしなくて済むのがprivateだと思います^^
|

|