[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 08/04 02:09 / Filesize : 316 KB / Number-of Response : 1037
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



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)

450 名前:デフォルトの名無しさん [2020/06/27(土) 22:55:59.77 ID:kHv6hhb8.net]
リフレクションはオブジェクト指向にとっては黒魔術でしかないので正当なやり方ではない
この問題の本質はオブジェクト指向にテストの概念がないことにある
オブジェクト指向は規模の大きなシステムの品質を担保するために作られたわけだが
現代ではそれにテストも入れるべきなんだよ
データ、メソッド、テストこの3つを内包するオブジェクトを作ることこそが真のオブジェクト指向

451 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 22:56:59.64 ID:gS37C1rZ.net]
>>432
じゃあ何のためにprivateにするんだよ?
テスト(外部)からアクセスするんだろ

452 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 22:57:06.02 ID:UrcM2fcl.net]
>>434
メソッドレベルのテストをリフレクション使ってまでやれって言われたことないですけどねw
inoutがテストしなければならないほど複雑になる1つのメソッドを書くことがおかしいし、
粒度が大きすぎてって、それはinoutを整理しきれてない設計がおかしいのでは?
何でも値が入ってきます、全部1つのメソッドで作ってテストしてください、なんて無茶ぶりだとおもいますねw

453 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 22:57:18.00 ID:gS37C1rZ.net]
>>436
設計したこと無いの?

454 名前:デフォルトの名無しさん [2020/06/27(土) 22:57:58.35 ID:kHv6hhb8.net]
>>436
privateはプログラムの話だから客は関係ないだろ
客がメソッドコールするわけじゃないからな

455 名前:デフォルトの名無しさん [2020/06/27(土) 22:58:22.25 ID:e0+LQFD/.net]
>>440
あるよ、そしてそれが何度も顧客によって
覆ったこともな。

456 名前:デフォルトの名無しさん [2020/06/27(土) 23:00:01.68 ID:kHv6hhb8.net]
>>438
内部からのみ処理したいものだからprivateにするんだよ
テストはしたいけどテストのためだけに他のオブジェクトからも
呼び出せるようにはしたくないよねって話をしてるんだ僕は

457 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 23:00:03.74 ID:8YCrt6Qf.net]
privateをテストするしないっていう想定自体が理解できない
privateメソッドなら当然それを呼び出しているpublicなメソッドがあるはずで
そのpublicメソッドのテストに当然privateなメソッドのテストも含まれるはず

よっぽどprivateメソッドで複雑なことしていない限りそのテストで十

458 名前:分だろうし
それでテストしきれないほど複雑なら別のモジュールに定義し直した方がいいだろう
[]
[ここ壊れてます]



459 名前:デフォルトの名無しさん [2020/06/27(土) 23:02:02.14 ID:kHv6hhb8.net]
>>444
それなりに複雑でメソッドを一つずつテストしたいけど
テストのためにオブジェクト分けるなんてイカれてると思うの
だってオブジェクトがテストのためにあるわけじゃないから
テストがオブジェクトのためにあるべきで、そこでですよ
オブジェクト内にテストを内包するのが正しいオブジェクト指向と結論するわけです

460 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 23:02:14.45 ID:gS37C1rZ.net]
>>442
顧客によって覆ることが何の関係があるの?

461 名前:デフォルトの名無しさん [2020/06/27(土) 23:02:29.65 ID:kHv6hhb8.net]
仕様が覆るのはあたりまえじゃん
それとアクセス修飾子の話は違うわ

462 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 23:02:36.66 ID:gS37C1rZ.net]
>>443
> 内部からのみ処理したいものだからprivateにするんだよ

テスト(外部)から処理したいんだろ
何矛盾したこと言ってるんだよw

463 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 23:03:54.57 ID:gS37C1rZ.net]
>>445
> それなりに複雑でメソッドを一つずつテストしたいけど
> テストのためにオブジェクト分けるなんてイカれてると思うの

複雑なメソッドは小さくしてください
設計がそもそも間違っています

テストのために小さく分けるのではなく
そもそも複雑なのが問題なのです。
問題を解決すればテスト可能になります。

464 名前:デフォルトの名無しさん [2020/06/27(土) 23:03:58.42 ID:kHv6hhb8.net]
>>448
だから、そこにジレンマがあるよねって話を最初からしてるつもりっす

465 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 23:04:46.01 ID:/AdLJL3G.net]
いや、この問題は言語と開発環境の問題だろ
概念は関係ないよ
visualstudioができちゃえば
できますよ
で終わりな話

466 名前:デフォルトの名無しさん [2020/06/27(土) 23:05:10.21 ID:kHv6hhb8.net]
>>449
僕は複雑なメソッドを大きく作ってるとは言ってないので
小さくしてくださいというアドバイスをいただいても困惑するばかりです

467 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 23:05:23.02 ID:UrcM2fcl.net]
逆に聞きたいけどpythonとかアクセス修飾子ない言語で、大規模プロジェクトがあったら、
ルール以外でアクセスはどう統制とってるの?

そういう言語の経験はWebくらいしか知らないから、全体何百万行(ステップ数でも人月でもいい)くらいのコードでこうしてた(る)ってのあったら教えて欲しい

468 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 23:06:53.54 ID:gS37C1rZ.net]
>>452
なぜできないんですか?



469 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 23:07:46.64 ID:XQLOkAsO.net]
>>454
あいつらサボってるからだろ

470 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 23:07:46.82 ID:gS37C1rZ.net]
誰でもできることができないなんて、能力がないなぁ

471 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 23:10:28.90 ID:npRplKHX.net]
お前らほんとプログラムのことしか知らないのな
品質を改善するときには品質を測るな これがテストの鉄則
タグチメソッドの入門でもよめ

472 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 23:12:05.09 ID:gS37C1rZ.net]
1.モノを作る前に品質を創れ
2.品質工学は統計ではない
3.科学的思考ではモノは出来ない
4.市場品質はすべて設計できまる
5.完全な設計は試験や検査は不要
6.品質評価はn=1でよい
7.品質を改善するときには品質を測るな
8.評価はあるべき姿を定義して、安定性はSN比で行う
9.直交表で設計の再現性をチェックする(パラメータ設計)
10. システムは複雑でなければ、改善はできない

473 名前:デフォルトの名無しさん [2020/06/27(土) 23:12:06.00 ID:kHv6hhb8.net]
>>457
ありがとー!タグっちゃん!

474 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 23:13:46.29 ID:gS37C1rZ.net]
どこから品質の話が出てきたのか知らんが、
品質とテストの話は

> 5.完全な設計は試験や検査は不要

これですかね?

475 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 23:19:08.91 ID:gS37C1rZ.net]
>>458はいくつか日本語の文章に問題があるな

1.モノを作る前に品質を創れ
2.品質工学は統計ではない        ×「品質工学は○○である」と言おう
3.科学的思考ではモノは出来ない     ×「○○的思考でモノは出来る」と言おう
4.市場品質はすべて設計できまる
5.完全な設計は試験や検査は不要     ×「不完全な設計は試験や検査が必要」と言おう
6.品質評価はn=1でよい
7.品質を改善するときには品質を測るな   ×「品質を改善するときには○○をしろ」と言おう
8.評価はあるべき姿を定義して、安定性はSN比で行う
9.直交表で設計の再現性をチェックする(パラメータ設計)
10. システムは複雑でなければ、改善はできない  ×「システムは複雑なら、改善ができる」と言おう

こう偉そうなことを言ってるのに、じゃあどうすればいいかを
相手に考えさせるのって、どうなんでしょうかね(苦笑)

476 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 23:24:56.40 ID:gS37C1rZ.net]
「品質が欲しければ、品質を測るな!」は
「品質が欲しければ、機能を測って改善しろ!」という意味みたいですな

つまりオブジェクトの品質を上げたければ
テストできるように機能を改善しろということですな
privateメソッドであれば、

477 名前:インターフェースを明確にして
機能に昇格させればpublicになるわけです。
[]
[ここ壊れてます]

478 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 23:31:52.99 ID:npRplKHX.net]
>>462
ホントにタグチメソッド知らなかったのか?
その割には理解が早いな

ようするにバクをなくしたいのだろ?
それならバクがでるかどうかのテストをすることが自体がずれてるんだ
そんなことは最終段階でやることじゃないんだ どうせモグラたたきになる  
最初の設計段階で徹底的にいじめ抜け
どれだけ変更に強いかをテストするんだ
品質が欲しければ,機能を測れ これにつきる



479 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 23:40:30.32 ID:gS37C1rZ.net]
>>463
では「機能を測る」とは?
どうやって測るのかを言ってみましょう
できるかな?w

480 名前:デフォルトの名無しさん [2020/06/27(土) 23:41:10.95 ID:ZFnYFbMi.net]
単体テストとどう違うの?

481 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 23:41:18.54 ID:gS37C1rZ.net]
>>463
> その割には理解が早いな
あんなもん当たり前のことを誰かがまとめただけだからね
デザインパターンと一緒。
よく知られたものに、名前をつけてるだけ

482 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 23:42:26.37 ID:gS37C1rZ.net]
>>465
複雑なものを複雑のままテストをしても意味がない
シンプルにテスト可能な形に設計を変えることがテストの目的の一つ
ようはprivateはpublicになるように設計を変えろということ

483 名前:デフォルトの名無しさん [2020/06/27(土) 23:43:10.60 ID:ZFnYFbMi.net]
単体テストって結合してからテストするの?

484 名前:デフォルトの名無しさん [2020/06/27(土) 23:46:52.77 ID:ZFnYFbMi.net]
王家秘伝のレシピ教えてやるよ。

#define private public

皆には内緒だぞ。

485 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 01:34:12.55 ID:wUTwjqhp.net]
>>469
#define ディレクティブを使用して、通常 C および C++ で行うように定数値を宣言することはできません。
C# の定数は、クラスまたは構造体の静的メンバーとして定義することができます。
そのような定数がいくつかある場合は、それを保持するための "Constants" クラスを個別に作成することを検討してください。

486 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 02:01:57.56 ID:pODeKu4C.net]
privateメソッドの直接テストしたいけど可視性を変えたくない場合は
リフレクションを簡単に使えるようにしてるテストフレームワークだったりライブラリ使えばいい

ちなみにGoやRustはprivateもテストできる仕組み持ってる

487 名前:デフォルトの名無しさん mailto:age [2020/06/28(日) 05:51:03.49 ID:qNzQpEfW.net]
>>469
あざーす!国王あざーす!

488 名前:デフォルトの名無しさん mailto:age [2020/06/28(日) 05:51:56.56 ID:qNzQpEfW.net]
>>471
ええなー



489 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 09:51:30.71 ID:lfkBrldT.net]
>>463
ソフトウェアの作り方も知らずにタグチメソッド真に受けたら、
糞みたいな品質のものしかできんぞw
単体テストってのは設計の一部なんだよ。品質テストとは全く異なる。
抽象論でタグチメソッドを適用しようとしてる輩が一番ヤバい。

490 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 10:22:04 ID:4vfVPlvE.net]
なんだミニ四駆のモータに学ぶことでもあんのか?って思ったら
品質100%の更に上の話じゃねーか

現場の単体テストもロクにやらないクソが問題になってるITでそんなもんいらん

491 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 12:40:59.37 ID:L5Cpw8A4.net]
中の磁石が強いほどトルクが上がって回転数が下がる
磁力が弱いほどトルクが下がって回転数が上がる

492 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 13:22:34.10 ID:S7usk0qp.net]
>>326
わかりやすい

493 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 18:21:30.86 ID:3Si3AZJb.net]
privateのテストってリファクタリングの妨げじゃないのか

494 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 18:55:54.96 ID:nHckGJvd.net]
開発体制が複数の会社でピラミッド状の階層化されてたら指揮系統的に相当厳しいだろうね。

495 名前:デフォルトの名無しさん [2020/06/28(日) 19:33:26.78 ID:JoVMtTbA.net]
Javaの修飾子宣言鬱陶しくて

496 名前:ルんと嫌い []
[ここ壊れてます]

497 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 14:12:08 ID:EmVrB3rr.net]
明示的な状態管理は、(不可能ではないにせよ)管理すべき状態の量が増えてくると非常に困難になってくるところ、関数型言語の考え方を取り込むことによってその負担を軽減できるのではないかーーという意見もあるようだけど、
このスレの人(カプセル化肯定派・否定派いずれも)としてはどう?

498 名前:デフォルトの名無しさん [2020/06/29(月) 19:41:29.30 ID:bVpw4tuk.net]
カプセル化の可否はともかく
階層化の有害性についてはこう思います。
例えばディレクトリを階層化のすると
親ディレクトリと子ディレクトリに同じデータを重複格納
する人が出たりしてデータの二重管理が発生
しやすくなると思います。
そのうちどれが正なのか分からなくなります。
あと単純に子供に格納するほどデータのアクセスパスが
長くなってどこにあるのか探し出すのが大変になると
思います。

これはオブジェクトの階層構造でも
JSONなどの構造についても言えることだと思います。



499 名前:デフォルトの名無しさん [2020/06/29(月) 20:06:40.16 ID:cYsf6eW3.net]
プログラムで階層化なんて意識したことないけど問題起こったことない
分野が違うのかな

500 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 20:18:08.97 ID:6d9dL1u1.net]
そう、問題が起こるのはいつも人間関係です

501 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 20:19:42.34 ID:tYVp58Ca.net]
つまり、人間関係の問題を持ってきても、技術を否定したことにはならないのです。

502 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 21:42:10.57 ID:P3P3vIj6.net]
>>483
>>1に書いてあることが理解できない?

503 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 23:35:22 ID:L39gVdue.net]
>>482
そこで挙げている階層化の問題だが、階層化せずフラットに格納すれば解決するのか?
階層化しないということは同じレベルに大量の物が同格に並ぶわけだが、そうなると目的の物を探すのが困難になりすでにあるデータと同じものを重複して格納する危険性があるだろう。
またアクセスパスが長くなるというが、フラットな構造で多数の物を適切に命名しようとすれば階層的な名前付けが役立つはずだが、それすら長くなると忌避するなら場当たり的に短い名前を着けていっていずれ収集が着かなくなるだけでないの?
お前さんが挙げた階層化の問題は階層化の仕方が悪い(下手な)だけで、階層化をしなければ解決するというものではなかろう。

504 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 05:33:42.93 ID:v2qXZCJh.net]
結局、分類だったり抽象化のやり方がクソってだけの話だろ。
フラットにしようが階層にしようが、クソな分け方したらどうにもならんてだけの話だ。

505 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 08:05:51.26 ID:GiU27GCt.net]
https://monobook.org/wiki/%E9%9A%8E%E5%B1%A4%E5%8C%96%E3%81%AE%E6%9C%89%E5%AE%B3%E6%80%A7

506 名前:デフォルトの名無しさん mailto:age [2020/06/30(火) 08:11:00.58 ID:PIU/381m.net]
>>486
ぴえ?

507 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 10:40:18.75 ID:J3IrN4Ey.net]
>>1が例に上げてるRFC3439は「Layering Considered Harmful」という強い言葉を使ってるが
レイヤ化は万能じゃなくデメリットもあるという当たり前のことを書いてるだけ
もちろん「カプセル化は絶対やめろ」なんてことは書いてない

メリット・デメリットを把握した上で
状況に応じたトレードオフの判断ができない人(>>1)には
ソフトウェアの設計はできない

508 名前:途中から見た。 mailto:sage [2020/06/30(火) 19:35:05 ID:g7PLkMcM.net]
なんか、privateメソッドのテストでもめているけど、なんで。
そもそも、privateメソッドを外部から呼び出してテストしないといけない場面が想像できないのだが。
クラスライブラリのコードを紛失したとか笑えないケースを想定しているの?



509 名前:デフォルトの名無しさん [2020/06/30(火) 19:48:43 ID:MKfuvp+I.net]
gitや自動ビルドツールの存在がなかった時代の
オブジェクト指向技術は淘汰されてもいいんじゃない?

昔はこれらがなかったからカプセル化で神経質に
防御してたけど
今は無理にパッケージを固めてやり取りすることが
なくなって

gitでソースを差分転送して再ビルドする方式に
切り替わった
旧仕様はブランチを切り分けといて復旧が簡単に
なって、仕様変更に対してそこまでビビらなくて良くなった。

それと自作のアプリのオブジェクトで
webからインストールしたライブラリや
フレームワークが自動生成して提供するもの以外で
それほど長時間状態を保持するような巨大なオブジェクト
構造を自作設計して作成することがあるか?
あるとすれば
webのセッションや
オープンワールドやFPSみたいなゲームくらいか

510 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 20:19:26 ID:v2qXZCJh.net]
今でもSIerなんかはコード書き換えないことに固執してるから可視範囲に対して神経質なんだよ。

511 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 20:27:32.13 ID:+5DxT57L.net]
>>492
それは「テストの時にだけpublicに変えればいいじゃん」か「privateはpublicに内在してるから直接テストする必要ないじゃん」のどっちの意味ですか?

512 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 20:58:39.82 ID:Ya6sc1A9.net]
>>492
コード紛失してなくても他社開発のをガッチャンコだと手が出せないでしょ。

513 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 20:58:42.09 ID:ww2Xd+MO.net]
× テストの時にだけpublicに変えればいいじゃん

○ テストがやりにくいというのは設計がまずいということ
自然な形でpublicになるような設計を改善すべきだ

514 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 20:59:02.71 ID:Ya6sc1A9.net]
小規模なら問題ない

515 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 21:38:14 ID:BIUXizBX.net]
他社のコードをテストすんの?

516 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 22:07:21.34 ID:GiU27GCt.net]
>>497
はぁ?バカはレスすんなよ

517 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 22:42:13.84 ID:zKRJDZmr.net]
>>499
そりゃ結合試験はするだろ

518 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 23:23:26.17 ID:BIUXizBX.net]
>>501
結合試験時に他社コードのprivateメソッドを態々呼出してテストすんの?



519 名前:途中から見た。 mailto:sage [2020/07/01(水) 00:09:32.11 ID:vgPSMoJs.net]
>>495
よくわからないが...強いて言うなら後者?
第一、クラスって実装者が責任を持ってテストするものだろう。
なんで、privateで定義されたものをpublicにして呼び出そうとするのかも、正直、わからない。
ブラックボックステストでもしたいの?
まぁ、ブラックボックステストってprivateメソッドを呼び出せば成立するかというと、違うと思うけど。
正直、何がしたいのかわからなさすぎて困惑している。

520 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 00:11:23.37 ID:Dh09feZF.net]
>第一、クラスって実装者が責任を持ってテストするものだろう。
これが守られてりゃこのスレみたいな議論は起こらんわ。

521 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 00:22:36 ID:dTufBNXb.net]
守るも何もクラスに不具合があれば実装者の責任だろ
って言うのが通用しないのか?

522 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 00:26:31 ID:Dh09feZF.net]
責任といってももういない奴に責任は取れんわな。

523 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 00:33:27.93 ID:XAYXSYxH.net]
客先に納めたプログラムを客先が勝手に変更したら責任は外れる契約になってると思う
これは弊社の納めたプログラムではありませんってなるから
社内で引き継いだなら文句を言うのは自由だが任された者がなんとかしろの精神だろ

524 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 00:43:31.96 ID:Dh09feZF.net]
クラスごとにしっかりテストがあって
引き継ぎがしっかりされる職場ばかりなら何の問題もないだろうね。
とても幸せな世界でいいですね。

525 名前:デフォルトの名無しさん [2020/0 ]
[ここ壊れてます]

526 名前:7/01(水) 01:04:03.02 ID:Ke5amsYp.net mailto: まだ続いてたか
結局問題は出来の悪いモジュールをどうするかって話だろ
[]
[ここ壊れてます]

527 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 01:36:00.07 ID:bx11ZQ99.net]
違うよ
visualstudioがテストプロジェクトでprivateをpublicみたいに呼べるようにするだけ

528 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 06:19:16.09 ID:y/Wgtnem.net]
>>503
privateを呼び出す必要があるってのはUnit Testの時で、実装者とテスターが同一人物かどうかは関係ないよ。
オブジェクト指向に限らずテスト理論の話になっちゃうんだけど、プロジェクトや規格で指定されるUnit Testの種類によってはpublic経由でprivate呼び出してたら組合せ爆発してテストドライバやスタブの開発やレビューだけで多大な工数が必要になってやってられなくなる。
なので十分に単純化されたprivateを含めて関数毎にテストする必要が出てくるのよ。



529 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 06:46:59.11 ID:5jdJ/dE3.net]
>>501
> そりゃ結合試験はするだろ

統合試験って言うことは、当然標準ライブラリの
テストも行うんだよな?例えばprintf関数のテストとか

530 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 06:53:14.54 ID:lozEWamw.net]
>>511
> public経由でprivate呼び出してたら組合せ爆発してテストドライバやスタブの開発やレビューだけで多大な工数が必要になってやってられなくなる。

そういうことだよね。だからそれはpublicメソッドが行ってる機能が多すぎるわけで
複数のpublicメソッドに分解するわけ。これが設計。

適切な関数の行数って思ったより短いものだから。
俺の場合、一部のcaseテーブルのようなものを除いてロジックと呼べるようなものがあるコードは
長いもので1関数30行〜40行程度半分以上は10行程度だよ

531 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 08:23:11.98 ID:y4QPMVjI.net]
>>512
何時何分何秒地球が何周回ったときに言いましたかーみたいな煽りだな

532 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 08:27:13.77 ID:3Re1TFuk.net]
>>512
そりゃprintf使うシステムの結合テストならもちろん結合テストのセンスでprintfもテストするよ。
ユニットテストの粒度とは違って「〜が標準出力されること」ってテスト項目になるけど。

533 名前:途中から見た。 mailto:sage [2020/07/01(水) 11:10:06.09 ID:LiVkSFt2.net]
結合テストと総合テストって同じ意味なのか?

534 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 12:14:34.41 ID:hgyYQ8XK.net]
総合テストって検収テストと同じじゃね?

535 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 12:24:10 ID:wljUBRxY.net]
テストの呼び方はプロジェクトによって違うからなんとも言えんなぁ

536 名前:途中から見た。 mailto:sage [2020/07/01(水) 12:36:28.97 ID:LiVkSFt2.net]
なんというか...コミュニケーションがまともにとれていないのでは?

恐らく、他人の作ったライブラリに対して単体テストをお前はやるのか?という意図で聞いた質問に、結合試験はするだろと回答したり、
結合試験と総合試験という字面で見ると似ているけど全然違う話を混在させたり、
似ているようで関係のない話を持ち出して混沌としているな。

語りたい事の本質が行方不明になっているように見える。

537 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 14:20:36 ID:JqIYLyXt.net]
>>512は総合じゃなく統合って書いてるぞ

結合テストのことを統合テストと呼ぶところもある
結合の度合いによって結合、統合、総合とそれぞれ分けてるところもある

単なる読み間違いなのか結合 = 統合の意味で使ってるのかは知らんけど

538 名前:途中から見た。 mailto:sage [2020/07/01(水) 14:54:20.92 ID:LiVkSFt2.net]
うわっ!恥ずかしいミスをしてたのは自分だったか。あとで、読み直す...。



539 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 17:50:33.35 ID:1PwA88RR.net]
visualstudioのテストプロジェクトが不甲斐ないってだけやし

540 名前:デフォルトの名無しさん [2020/07/02(Thu) 19:42:17 ID:84e/i8uV.net]
privateメソッドテストするとか正気?
テストしなくてよくするためのprivateだろ

541 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 19:49:51.80 ID:iX514c6x.net]
テストする必要があるというのは
全部書き直した方がましということだが

542 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 20:08:44.37 ID:/yt09sjO.net]
>>523
特大クラス一つの

543 名前:中に全部privateでメソッド作成したら
どういう理由で全メソッドテスト免除になるの?
[]
[ここ壊れてます]

544 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 20:10:40.42 ID:/yt09sjO.net]
マイクロソフトに頼らんで独自にテストプロジェクト作ってるような会社はできてんで
visualstudioの都合でテストやりたくないって言ってるだけだろクズども

545 名前:デフォルトの名無しさん [2020/07/02(木) 20:46:21.86 ID:Vurtjy2V.net]
関数どころか変数に至るまで一つ一つ丁寧に検査してましたわ。

546 名前:デフォルトの名無しさん mailto:sage [2020/07/02(Thu) 21:29:57 ID:lIo9GiA1.net]
>>525
どんだけ巨大なクラスでも全部privateだと外から一切呼び出せないデッドコードになるのでテストする意味さえないだろ。

547 名前:デフォルトの名無しさん [2020/07/02(Thu) 21:35:43 ID:UKbwg08G.net]
>>528
せやかてpublic通してたら結合テストじゃんw

548 名前:デフォルトの名無しさん [2020/07/02(Thu) 21:36:02 ID:UKbwg08G.net]
unit testの意味わかっとんのけ?



549 名前:デフォルトの名無しさん mailto:sage [2020/07/02(Thu) 21:37:29 ID:7zBU/W9S.net]
プロジェクトによって違ってたなあ

550 名前:デフォルトの名無しさん [2020/07/02(Thu) 21:40:09 ID:UKbwg08G.net]
>>531
せやろ、ワイの会社も結合テストのことをunit testと呼んでるわ
本当のunit testはやってない






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<316KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef