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)
421 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 22:26:14.09 ID:gS37C1rZ.net] >>405 > privateにするのはよそからアクセスさせないため テスト(よそ)からアクセスするのでpublicです
422 名前:デフォルトの名無しさん [2020/06/27(土) 22:27:02.78 ID:kHv6hhb8.net] >>407 そこで、僕に名案があります テストを同じオブジェクトの中に用意するんです そうしてデータ、メソッド、テスト、この3つを備えたオブジェクトをアクターと呼ぶことにしましょう プログラミングパラダイムはアクターが主流の時代に突入します
423 名前:デフォルトの名無しさん [2020/06/27(土) 22:28:17.85 ID:kHv6hhb8.net] >>408 テストのためにpublicにしたらオブジェクトが壊れるため テストのためにpublicにするのはオブジェクト指向的にありえない オブジェクト指向エアプか?
424 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 22:28:55.27 ID:gS37C1rZ.net] >>410 > テストのためにpublicにしたらオブジェクトが壊れるため 壊れないよ。
425 名前:デフォルトの名無しさん [2020/06/27(土) 22:30:05.59 ID:kHv6hhb8.net] テストという概念がオブジェクト指向の中にないからこのようなジレンマに陥るのです そこで、オブジェクトの中にテストを入れてしまおうというのが僕が提唱する新時代の プログラミングパラダイム、アクター指向です
426 名前:デフォルトの名無しさん [2020/06/27(土) 22:30:26.61 ID:kHv6hhb8.net] >>411 壊れるに決まってるだろ、いい加減なこと言うなハゲ
427 名前:デフォルトの名無しさん [2020/06/27(土) 22:30:40.41 ID:kHv6hhb8.net] privateなめんなよ
428 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 22:30:57.83 ID:gS37C1rZ.net] >>413 なんだよw根拠言えないのかよw
429 名前:デフォルトの名無しさん [2020/06/27(土) 22:31:24.07 ID:kHv6hhb8.net] >>415 お前が根拠言えよ
430 名前:デフォルトの名無しさん [2020/06/27(土) 22:31:41.00 ID:kHv6hhb8.net] 壊れないことを証明してみせろ
431 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 22:32:50.72 ID:gS37C1rZ.net] 壊れる要因がないので壊れない
432 名前:デフォルトの名無しさん [2020/06/27(土) 22:33:18.25 ID:kHv6hhb8.net] 早くしろよおら、全部publicにしてプログラム書いてみろよ、ぶち、壊してやるから
433 名前:デフォルトの名無しさん [2020/06/27(土) 22:36:21.73 ID:kHv6hhb8.net] アクセス修飾子はテストのために変えるものじゃない そこに現行のオブジェクト指向の限界がある そこでオブジェクト内にテストまで用意しましょうというのが新時代のアクター指向
434 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 22:37:15.69 ID:paNjyoZf.net] 現状のオブジェクト指向言語がウンコってことでいいよね
435 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 22:38:06.59 ID:gS37C1rZ.net] > アクセス修飾子はテストのために変えるものじゃない 当たり前だろうw テストというのは外部からインターフェースの仕様が明確に決まってるからこそできること 外部からのインターフェースの仕様が明確に決まったなら それはpublicにしてよい
436 名前:デフォルトの名無しさん [2020/06/27(土) 22:38:47.14 ID:kHv6hhb8.net] >>422 そんなの当たり前だろ
437 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 22:39:05.28 ID:gS37C1rZ.net] だから当たり前の話をしてる
438 名前:デフォルトの名無しさん [2020/06/27(土) 22:40:35.80 ID:kHv6hhb8.net] >>421 はい、そう言わざる得ないのが現状です 言語が悪いんじゃないプログラミングパラダイムにまだ進化の余地があると 前向きに捉えるのが良いと僕は思います アクター指向言語がこれから出てくることを祈ります
439 名前:デフォルトの名無しさん [2020/06/27(土) 22:40:49.92 ID:kHv6hhb8.net] >>424 だから当たり前だろ
440 名前:デフォルトの名無しさん [2020/06/27(土) 22:41:07.23 ID:kHv6hhb8.net] あ・た・り・ま・え
441 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 22:41:23.91 ID:5gWgsM/a.net] え?privateなメソッドをテストしないって正気? 単に現状のオブジェクト指向言語と開発環境がテストのサポートできてないだけだろ
442 名前:デフォルトの名無しさん [2020/06/27(土) 22:42:31.56 ID:kHv6hhb8.net] >>428 ねー意味分かんないよねー、ドン引きだよねー
443 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 22:43:30.93 ID:UrcM2fcl.net] >>399 リフレクション使ってでもやれって言うときはやりますけど? そこら辺はルール作ってるはずで設計以前で明言されるべき private要素に外部からアクセスしまくるようなことを許す設計やルールはどうかと思いますけどね というか他の読み手が安心感を得るためでもある気がしますね 全部publicなプロダクトがあったとしてそれに新しいクラスやらを追加しろって言われたら神経質にならなければいけないw 逆にアクセス修飾子なしの言語はルールだけでやってるよね、あれ怖いわ まあだいたいが単純なプロジェクトしかなさそうな言語だけど。。
444 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 22:43:37.12 ID:gS37C1rZ.net] privateなメソッドをテストしないんじゃなくて 仕様が明確に固まってないからテストしてもメンテナンスのコストが増えるだけ そういうのはprivateにしてpublicメソッド経由でテストする それがやりにくいーっていうなら、そのprivateなメソッドの 仕様を明確に決めればpublicにすることができる ようするに今やるか後回しにするかの問題でしか無い
445 名前:デフォルトの名無しさん [2020/06/27(土) 22:44:43.36 ID:kHv6hhb8.net] >>431 仕様が固まってないからprivateにするんじゃねーんだよ おめーさてはプログラミングエアプか?
446 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 22:45:21.19 ID:qZEydISP.net] >>431 いやいやテストプロジェクトではprivateにアクセスできるってだけでいいでしょ
447 名前:デフォルトの名無しさん [2020/06/27(土) 22:45:36.87 ID:kHv6hhb8.net] >>430 じゃあprivateでもテストすればいんじゃないでしょうか
448 名前:デフォルトの名無しさん [2020/06/27(土) 22:52:10.82 ID:kHv6hhb8.net] テストオブジェクトから呼び出すためだけに オブジェクト内部の処理をpublicにするのはありえない publicメソッド経由で呼び出すのは粒度が大きすぎて話にならない リフレクション使えばテストできるんだからそういう機能を持ったテストライブラリを使うべき
449 名前:デフォルトの名無しさん [2020/06/27(土) 22:53:18.84 ID:e0+LQFD/.net] インターフェース仕様にまだ決まってないだとか 確定なんて明確な区切りなんてものは 現実にはない。 まだ確定してなくても仮のものを仮定して 実装はできる。 確定した後にインターフェースを変えたくなったり ある日根底から覆ったりする。 privateで制限した内容は顧客要求より強い効力を持つの? だったら凄く有効だよな でもそうじゃないだろ
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はやってない
551 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 22:14:17.02 ID:/yt09sjO.net] >>528 Form1とかそんな感じじゃん
552 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 07:01:01.95 ID:Ul5hp/bW.net] >>525 誰も使わんからテスト不要だね
553 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 08:34:55.79 ID:zR3byV+3.net] >>532 それは珍しいな
554 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 08:56:10.03 ID:N+TCe3uh.net] これは酷い。RFC 3439はネットワークの仕様の話であってオブジェクト志向なんか 一切関係ないし、プログラミングの話でもない。 偏差値が低い学校でだけ教えてた事実なんてないしアメリカの大規模システムは 全部OOでカプセル化が基本。 的外れすぎて開いた口が塞がらない。これ書いた人間が全く一切わかってないのはよくわかった。
555 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 09:22:53.27 ID:r9jTvXIP.net] >>536 わざとバカなことを言って他の人が本気で反論や議論してくるのを笑ってる可能性もゼロではないが、まあ単に本物のバカという可能性のが高いと思う
556 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 10:20:55.42 ID:N+TCe3uh.net] >>537 本気感が凄いね。反論とかしようがない1から10まで間違ってるレベルだし。
557 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 10:22:52.04 ID:N+TCe3uh.net] こんなんでもRFC確認する人なんてほとんどいないだろうし、クラウドがあるじゃないですか! のレベルの日本ではショーンK的に通用しそうというか、結構このスレでも通用してるのがおっかない。
558 名前:デフォルトの名無しさん [2020/07/03(金) 10:25:42.60 ID:lDWf2b6S.net] Javaで外クラスから内クラスのprivateメンバが見れるのはなぜですか? 超論理的思考によるとどう考えても理論に欠陥があり矛盾してる。 みなさんはこのJavaにおけるクラス体系をおかしいと思いながら割りきって使ってるのですよね?
559 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 10:27:37.08 ID:N+TCe3uh.net] 単に道具だから自分で考えて必要なら使えば良い訳で。 カプセル化ってのはつまり部署ごとにお前のところはお前で責任を持て、 お前が変えたからって他の部署に仕事をさせるな、ということだから、 それができてればなんでも良い。
560 名前:デフォルトの名無しさん [2020/07/03(金) 11:40:51 ID:x82j4VqA.net] 複数の開発会社が絡む大規模案件と 一社開発や個人開発の小規模案件を ゴッチャゴチャにして同列で語り合うから、話が噛み合わないし、話が終わらないんよ。
561 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 11:47:43 ID:Gy+Up1+B.net] >>542 各クラスの仕様を明確にするのか仕様を決めずに実装するかの差だよ 開発手法の差だが開発規模の差ではない
562 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 11:51:37 ID:uIgOlo/V.net] >>543 仕様が明確じゃないのにテストする意味あるの? それともprivateメソッドの仕様を明確にするの?
563 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 11:53:31 ID:N+TCe3uh.net] そもそもOO
564 名前:ニかは大規模開発するために出てきた手法だから個人で小さいもの 作ってるなら関数でもスパゲッティでも本人わかってりゃいいわけだし、昔は 関数でも部署ごとで話し合ってちゃんとやってたけど、どうしても直接アクセスして 変更の際ぶっ壊れるようなものを作るやつが出るから、じゃあもう見せなきゃそういう 事態は起こらないということで実際それはうまくいってる。 個人のソフトとかは好きにすれば良いし、好きにできるようになってるんだから それぞれ道具を自分の必要に応じて使って勝手にやれば良い。 [] [ここ壊れてます]
565 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 11:59:07 ID:Gy+Up1+B.net] >>544 「privateはxunit testingしなくていい」と言われる理由はそこだ 他のクラスとの関わりとして必要な仕様は非privateメンバのみに着目すればいい publicメンバの振る舞いが変わらずすべてのテストをパスできるならprivateがどう変更されようが他のクラスからは関係ないからな
566 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 12:07:31 ID:uIgOlo/V.net] つまりprivateをテストするってことは仕様が明確になってるわけで publicにしても問題ないってことだよね
567 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 12:07:34 ID:Gy+Up1+B.net] 勢いで書いたから非privateとpublicがごっちゃになってるけどこの手の話題でpublicと書いてあったら全部非privateと読み替えて下さい
568 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 12:10:41.37 ID:BB9T+E2r.net] >>540 超論理的思考によるとって、論理を超えた思考なんかされたって会話にならないから、論理的思考をした上で疑問があれば相談してくれ。
569 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 12:16:49.80 ID:N+TCe3uh.net] Privateをテストするかどうかはプロジェクトごとのテストのやり方次第だし、 なんのテストかにもよるわけで。 デベロッパーテストなら当然するだろうし、リグレッションテストで普通は プライベートメソッドをテストしないだろう。 その辺はカプセル化とかOOとかはあまり関係の無い話。
570 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 12:22:55.88 ID:hDsckVNf.net] privateもテストしろよハゲ
571 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 12:26:06.83 ID:sqXfkC+n.net] privateをpublicにしてもいいよねって言ってるやつは、改修で命名とかしたことないんかな
572 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 12:26:36.41 ID:hDsckVNf.net] どこの現場でも通じないトンデモ理論を前面に出して話してんじゃねーぞガイジ
573 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 12:29:48.69 ID:Gy+Up1+B.net] >>551 クラスの仕様変更でpublicになったときに追加すればいい 極端な話、複数のpublicメンバの中でprivateAとprivateBが使われてて各privateの挙動は実装者の想定と実は違ったとしてもすべてのpublicメンバの挙動が仕様通りなら(クラス仕様変更して変なバグを引く羽目になるまで)なんの問題もない その時対処する事案
574 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 12:55:27.30 ID:MMMvRh6C.net] privateな状態を確認するテストのがテスト数が減る。 二つのpublicなメソッドの関連をテストする場合、 n*m になるが 状態が k 個の場合、 (n + m)*k になるわけだよ。 無理にpublicだけのテストを書くことがどれだけアホか。
575 名前:デフォルトの名無しさん [2020/07/03(金) 13:00:40 ID:lDWf2b6S.net] Javaで外クラスから内クラスのprivateメンバが見れるのはなぜですか? 論理的思考によるとどう考えても理論に欠陥があり矛盾してる。 みなさんはこのJavaにおけるクラス体系をおかしいと思いながら割りきって使ってるのですよね?
576 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 13:19:27.55 ID:Gy+Up1+B.net] >>555 privateテストでテスト数減るならその方がいいのは自分も同意 誤 privateはテストしなければならない 誤 privateはテストしてはならない 正 必要なテストだけ簡単になるように書けば良い
577 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 13:48:21.04 ID:BB9T+E2r.net] >>556 https://ja.coder.work/so/java/17371
578 名前:デフォルトの名無しさん [2020/07/03(金) 14:48:27.68 ID:lDWf2b6S.net] >>558 それは内クラスから外クラスが見えることの説明。 わたしの質問はなぜ外クラスから内クラスのprivateメンバが見れるのか?
579 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 15:31:34 ID:/F47has6.net] >>525 もしかして 神オブジェクト?
580 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 15:33:00 ID:/F47has6.net] よく見たら全部privateか。 ...いや、そんなの誰が呼ぶんだ。
581 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 15:36:50.41 ID:FAOrvW1R.net] しらんがな、言ったやつがコードサンプルでも出さなきゃ説明力足りてないから分からんだろ 外部クラスがどうのとか言ってるやつもな。Javaの外部内部の関係も理解が曖昧なんだろ
582 名前:デフォルトの名無しさん [2020/07/03(金) 16:46:44.22 ID:q5wbDGG6.net] Javaって修飾子付けないとpackage privateがデフォルトだからその事言ってんじゃね? package privateとは言い換えればpakage内publicと同じだから
583 名前:デフォルトの名無しさん [2020/07/03(金) 16:51:38 ID:36TwtcUk.net] じゃあpimplで。
584 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 16:55:37 ID:hDsckVNf.net] >>554 言い訳こいてんじゃねーよ 単体テストにpublicもprivateもねーよ 全メソッドテストしろや
585 名前:デフォルトの名無しさん [2020/07/03(金) 16:58:29 ID:36TwtcUk.net] 弊社はC2カバレッジ100%に満たないものは出荷できませんけどね。
586 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 17:19:33.24 ID:Gy+Up1+B.net] c2の100%は分野次第だがwebや基幹程度なら無駄と欺瞞で逆に信用できない
587 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 17:47:09.01 ID:DQKehNsV.net] それな
588 名前:デフォルトの名無しさん mailto:age [2020/07/03(金) 19:19:16 ID:TUVANe+h.net] >>566 普通そうだよね
589 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 19:53:44 ID:FArQoHTp.net] 特に組み込みはC2カバレッジが常識なんだけど、ISO26262では関数カバレッジでOKという不思議。
590 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 20:32:31.27 ID:Gy+Up1+B.net] >>569 分野によるって言ってるだろ 人命関わらないgui優先で運用回避がまかり通る分野全般はカバレッジなしやc0カバレッジ70%(自動生成コード除く)とかなんだよ
591 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 21:06:04.59 ID:DQKehNsV.net] あー、ここ組み込みとかのやつらが多いのか!納得だわ
592 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 03:14:27.24 ID:1AXxY7r6.net] >>559 そりゃインナークラスは親クラスのメンバーなんだから 親クラスから見えるのは当たり前。 巨大クラスを作ってその中にインナークラスが大量にあるような コードならそれはカプセル化できてない。Java使ったから自動的に カプセル化できるものでも適切なOOの設計になるわけでもない。 それらがやりやすいような言語なだけ。 適切に使えば、インナークラスを使わなかった場合パブリックで メンバーにアクセスさせなければいけないのに対して、インナークラスの メンバーはアウタークラス以外には見えないわけだから、よりカプセル化は 進んでいる。
593 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 03:31:41.97 ID:1AXxY7r6.net] 親クラスは不適切だった。インナークラスはアウタークラスのメンバーなんだから メンバーを見られるのは当たり前。
594 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 08:51:34.07 ID:+L2cGNSv.net] >>572 組み込み開発やってるけど、ちゃんと最先端の勉強をしている人はオブジェクト指向理解しているよ(別にOOP自体は普及しきったノウハウだが)。 言語はC/C++言語ほぼ一択だけど。(他はRustくらいだが、まだ普及しない) まぁ、WEBやアプリ開発等、我々から見て抽象レイヤーで使われるノウハウを軽視するおじさん上司も多いし、組み込みに残念なプログラマーが多いことは否定しないけど。
595 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 09:02:21.50 ID:+L2cGNSv.net] >>566 カバレッジテストとアクセス修飾子って関係あるの? カバレッジテストを合格するためにpublicにするとか、本末転倒じゃね?
596 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 10:13:15.22 ID:6t8LAACC.net] >>576 ねーよ 黙って100%にしろや
597 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 10:19:47.88 ID:+L2cGNSv.net] 話の流れからして、テストのためにpublicにしろに読み取れたけど、ミスリード? まぁ、そんな馬鹿な話、あるわけねーか。
598 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 10:30:23 ID:xLCX+W2/.net] >>578 いいよ 100%にできる方法でやって
599 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 10:45:14.19 ID:MjvraXl0.net] 草、どんな立場だよw
600 名前:デフォルトの名無しさん [2020/07/04(土) 11:02:29 ID:pmIasW6W.net] publicにしなくてもリフレクション使ったりすればええんやで privateだからテストしないなんてプログラマとしてありえない
601 名前:デフォルトの名無しさん [2020/07/04(土) 11:03:03 ID:pmIasW6W.net] C2 100%は新人でも最低ライン
602 名前:デフォルトの名無しさん [2020/07/04(土) 11:06:53 ID:pmIasW6W.net] テストの仕方を知らない教えない会社があるんだなー
603 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:08:56.73 ID:M3d71N9d.net] >>576 > カバレッジテストとアクセス修飾子って関係あるの? 当然関係ないよ。(ここらへんで関係があるとか言ってるのはアホからだ
604 名前:ウ視していい。) privateになってようが、それはpublic経由でテストするのだから カバレッジは変わらない テストのしやすさが変わるだけ。もしprivateのままだとテストしづらいなら そのprivateの仕様を明確にしてpublicにして問題ないような設計に変えるだけのこと [] [ここ壊れてます]
605 名前:デフォルトの名無しさん [2020/07/04(土) 11:13:54 ID:pmIasW6W.net] >>584 publicにしないとテストできないってどんな言語? privateのままテストしたらええやんけ unit testは最小単位でテストすることでテストのコストを 最小化するものだからpublic経由でprivateなメソッド呼び出してたら unit testの意味をわかってないアホの極みだしテストのためだけにpublicにするよう 設計に手をいれるのは本末転倒
606 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:14:51 ID:9ghyGMpS.net] とある大手家電メーカー勤めだが、以前までC2カバレッジ必須でやってたんだけど、色々な計測の結果じつはユニットテストでカバレッジに時間かけるよりシステムテストに時間かけたほうが品質が上がるという結果が出てからはユニットテスト必須じゃなくなったわ。
607 名前:デフォルトの名無しさん [2020/07/04(土) 11:14:53 ID:pmIasW6W.net] テストの仕方って教えないものなんだなー
608 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:16:50 ID:M3d71N9d.net] 外部から使うかどうかという(間違った)考え方で privateにするかpublicにするかを決めてると 例えば、全文検索エンジンなんか最低限 文書の登録メソッドregisterと検索メソッドsearchだけでいいってことになってしまう しかし全文検索エンジンとかいうのは内部で 高速なデータ検索を行うためにいろんなアルゴリズムやデータ構造を 使っているわけで、それらを(実際に使用例ができるかどうかは別として) 汎用的に使えるようにライブラリとして分離すればいいわけ privateにするかpublicにするかっていうのは、そのシステムで外部から使うか?ではなくて オブジェクトとして外部から使うかなわけで、privateでテストしづらいようなものは 別オブジェクトに分離とするとか設計をみなすべきってことなんだよ
609 名前:デフォルトの名無しさん [2020/07/04(土) 11:18:52 ID:pmIasW6W.net] >>588 privateのままテストしたらオブジェクト分ける必要ないよ privateのままテストする方法がわからないからオブジェクトわけましょうなんて愚の骨頂 愚かの極み
610 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:18:58 ID:M3d71N9d.net] >>585 > publicにしないとテストできないってどんな言語? そんな話はしてない 可能不可能な話はしていない やりやすいかどうかの話をしている コストを考えなきゃいかんよ? できるけど大変っていうのは、問題を何も解決してない ちゃんと設計をせずに関数のインターフェースを定義せずに 無理やりprivateのテストをしても、private=外部から使わない=変更しても問題ないわけで それに対してテストをしていると、変更しても問題ないはずのprivateメソッドを変更したら テストが失敗するってことになるのでよくない
611 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:20:06 ID:M3d71N9d.net] >>589 お前はprivateメソッドを変更したときの 影響の大きさがわかってないよね
612 名前:デフォルトの名無しさん [2020/07/04(土) 11:23:05 ID:pmIasW6W.net] >>590 privateでテストできないならpublicに設計し直すんやって言ってたじゃん privateのままでテストするのに何も大変なことなんてない テストのためだけに設計し直すのは頭おかしい テストされてないメソッドが存在する方が問題だよ 外部から使わないから問題ないよねって感覚で勝手に修正されるわけないだろw メソッド書き換えたらテストも修正するのは当たり前
613 名前:デフォルトの名無しさん [2020/07/04(土) 11:24:25 ID:pmIasW6W.net] >>591 わかってないのはそっちの方、unit testでカバーしてなかったら 仕様通り動いてるのを確認できない
614 名前:デフォルトの名無しさん [2020/07/04(土) 11:26:55 ID:pmIasW6W.net] privateなメソッドであっても事前条件も事後条件もある unit testでカバーしてれば壊れてないことを確認できるからリファクタリングが可能になる
615 名前:デフォルトの名無しさん [2020/07/04(土) 11:27:43 ID:1AXxY7r6.net] 大規模システムでずっと来てるけどカバレッジって初めて聞いた。調べたら アメリカだと航空宇宙とか自動車とかでやるみたいね。 ERPで分岐ごとにやってたら多分完成まで数世紀かかるよw privateとかpublicとかは単に現場次第だよね。正式なQAメソッドではそこまで 言わないし、どうで
616 名前:もいいというか、臨機応変にやるとこ。 [] [ここ壊れてます]
617 名前:デフォルトの名無しさん [2020/07/04(土) 11:30:38 ID:pmIasW6W.net] >>595 臨機応変にやるのは会社を首にならないためですよねw それは社会をどうやって生き抜いていくかサラリーマンとしての心得じゃないですか プログラマとして品質の高いプログラムを作るためにC2 100%は最低条件ですよ
618 名前:デフォルトの名無しさん [2020/07/04(土) 11:33:41.81 ID:1AXxY7r6.net] >>596 プログラマって言ったってサラリーマンと対して変わりがないくらい幅広いわけで。 大規模ビジネスシステムで分岐ごと全部テストしてたらピラミッド建設みたいな事に なりますw
619 名前:デフォルトの名無しさん [2020/07/04(土) 11:36:02 ID:1AXxY7r6.net] ちなみに臨機応変にやるとこなのは会社首とかはどうでもよくて、 ユニットテストはなに、リグレッションは、アクセプタンスはってのは QAのメソッドとして確立してるけど、JavaのPrivateがどうするかみたいなのは 完全に現場次第だから。 世界標準はないでしょ。
620 名前:デフォルトの名無しさん [2020/07/04(土) 11:39:33.69 ID:pmIasW6W.net] >>597 大規模システムってみずほとか? テストは組み合わせを考えると膨大になるのだけれども 最小単位のunit testだとそうでもなくてだからこそunit testは大事なんよ Salesforceは知ってる?クラウド型のサービスでアプリ作ったりできるんだけど カバレッジが75%以下だとデプロイできなくなってる 大規模だからビジネスシステムだからテストしなくていいはちょっと今の時代ありえない
621 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:39:35.50 ID:MJUVFEDB.net] 昔の組み込みの少ない経験だけでイキってるんやろ
622 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:40:52.54 ID:M3d71N9d.net] >>592 > privateでテストできないならpublicに設計し直すんやって言ってたじゃん > privateのままでテストするのに何も大変なことなんてない 自分で答え言ってるじゃんw privateでテストできないならpublicに設計し直すんだから privateのテストは大変じゃなくて必要ないってこと
623 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:41:39.32 ID:M3d71N9d.net] >>593 > わかってないのはそっちの方、unit testでカバーしてなかったら > 仕様通り動いてるのを確認できない ユニットテストでカバーしないなんて一言も言ってないんだが? 何に反論してるんだよ
624 名前:デフォルトの名無しさん [2020/07/04(土) 11:41:45.39 ID:pmIasW6W.net] >>598 現場次第だから現場に従うんだっていうのはそれはサラリーマンとして生き残るために そうせざるを得ないだけだよね、品質の高いプログラムを作るなら常にテストはしないといけない 世界標準がないからいんだっていうのじゃないよ
625 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:42:23.92 ID:M3d71N9d.net] >>594 > privateなメソッドであっても事前条件も事後条件もある > unit testでカバーしてれば壊れてないことを確認できるからリファクタリングが可能になる 最初からpublic経由でテストするって言ってるよね?
626 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:43:01.27 ID:czCytfqY.net] あたい知ってるよ カバレッジテストを合格するために、privateをpublicにしてメソッドを呼び出せばいいんだよね。 あたい知ってるよ カバレッジテストを合格するために、メソッドの中に記載されている条件文全て消せばいいんだよね。 あたい知ってるよ カバレッジテストを合格するために、メソッドの中に記載されているコードを全部消せばいいんだよね。
627 名前:デフォルトの名無しさん [2020/07/04(土) 11:43:01.49 ID:pmIasW6W.net] >>601 privateのテストは必要だよ privateでテストできないからpublicにすると言ってるのは君の方 僕はprivateでテストするべきだって立場
628 名前:デフォルトの名無しさん [2020/07/04(土) 11:43:56.50 ID:pmIasW6W.net] >>602 君はprivateのテストは書かないってことだから privateのメソッドはunit testでカバーされてないよねってこと
629 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:44:22.90 ID:M3d71N9d.net] >>606 > privateのテストは必要だよ だから何度も言ってるがprivateでテストしたいと思ったら publicに変更するんだから、privateのテストはしなくてすむと言ってる お前短絡思考なんだよ。 privateはprivateのままテストしなくちゃいけないんだって思ってるだろ
630 名前:デフォルトの名無しさん [2020/07/04(土) 11:44:50.09 ID:pmIasW6W.net] >>604 それはunit testにならないよってこと privateのメソッドをテストできてないよってこと
631 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:45:01.10 ID:M3d71N9d.net] >>607 > 君はprivateのテストは書かないってことだから > privateのメソッドはunit testでカバーされてないよねってこと なんですぐ上でprivateはpublic経由でテストするって言ってるのに 理解できてないの?
632 名前:デフォルトの名無しさん [2020/07/04(土) 11:45:43.09 ID:pmIasW6W.net] >>608 テストしたいからpublicにするのが間違ってて privateのままテストするのがオブジェクト指向として正当なやり方
633 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:46:08.10 ID:M3d71N9d.net] >>609 > それはunit testにならないよってこと > privateのメソッドをテストできてないよってこと publicメソッド経由でテストしますがなにか? publicメソッド経由でテストするのが大変なものは 設計を変更すべきなんだよ
634 名前:デフォルトの名無しさん [2020/07/04(土) 11:46:12.42 ID:pmIasW6W.net] >>610 public経由でのテストはunit testではないよってこと
635 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:47:15.08 ID:M3d71N9d.net] >>611 > テストしたいからpublicにするのが間違ってて > privateのままテストするのがオブジェクト指向として正当なやり方 だからprivateのままpublicメソッド経由でテストすりゃいいじゃん(笑) 何度も言ってる。 それが難しいなら、それはコードがすでに複雑である証拠なので 複雑なものを直さないでテストすると破綻する
636 名前:デフォルトの名無しさん [2020/07/04(土) 11:47:24.81 ID:pmIasW6W.net] >>612 だからテストのためにオブジェクト変えてるのはprivateのテストを知らないだけだから 本末転倒だってこと
637 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:47:48.99 ID:M3d71N9d.net] >>613 > public経由でのテストはunit testではないよってこと その根拠は?お前のユニットテストの定義は? それはどこで勉強したこと?
638 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:48:47.27 ID:M3d71N9d.net] >>615 > だからテストのためにオブジェクト変えてるのはprivateのテストを知らないだけだから 複雑だからオブジェクトを変えてるんだよ アホなのか? privateのテストはpublicメソッド経由でやる それが難しいなら、コードが複雑だから設計を治す
639 名前:デフォルトの名無しさん [2020/07/04(土) 11:48:55.01 ID:1AXxY7r6.net] >>599 アメリカの某有名パッケージだね。 その界隈では知ってる限りunit testでカバレージを求められることは無いし GAFAあたりでも分岐ごとにやらないはず。エッジケースをどうするかとかは 聞かれるけど。 だいたいデベロッパーテストで全分岐をカバーしたところであまり意味はないし。 どのみちQAに回すわけで他人がやんなきゃ意味ない。 カバレージという概念を求められるのが少なくともアメリカでは航空宇宙や 自動車のようだし、良い悪いは別として、これが求められるようなところは OOとかカプセル化とかが大事なプロジェクトとはちょっと違うよね。 千人のデベロッパーに五百人のテスターで組み込みとかやらないでしょ。 いや知らんのでイメージだけど。
640 名前:デフォルトの名無しさん [2020/07/04(土) 11:49:13.09 ID:pmIasW6W.net] >>614 public経由したらunit testではないよってこと privateメソッドをテストすることは難しいことではないよ
641 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:49:55.50 ID:M3d71N9d.net] >>619 > public経由したらunit testではないよってこと だからその主張の根拠は何? お前のオレオレルールの話なんか 何のやくにも立たないだろ
642 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:50:29.94 ID:MJUVFEDB.net] 誰のためにユニットテストするの?w 語ってるべき論は誰かを想定しちゃってない?w
643 名前:デフォルトの名無しさん [2020/07/04(土) 11:50:46.08 ID:pmIasW6W.net] >>616 unit testは最小単位だから、世界共通の定義 publicを経由してたら内部でどんなにprivateなメソッドを呼び出しまくってても unit testになるなんて、定義はどこにもないのでpublic経由はunit testに当てはまらない
644 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:51:29.32 ID:MG3qPS+J.net] 名前をつけるとpublicだろうがprivateだろうがテストしなきゃいけない →つまり無名にしてその場で使い捨てればテストしなくてOK!
645 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:51:49.54 ID:M3d71N9d.net] もう答えがすでに出てる話をまだづつても無意味なんだけどなw t-wadaのブログ https://t-wada.hatenablog.jp/entry/should-we-test-private-methods#%E3%83%91%E3%83%96%E3%83%AA%E3%83%83%E3%82%AF%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E7%B5%8C%E7%94%B1%E3%81%A7%E3%83%86%E3%82%B9%E3%83%88%E3%81%99%E3%82%8B 私の回答 短くまとめると、プライベートなメソッドのテストを書く必要は 無い と考えています。 ほとんどのプライベートメソッドはパブリックメソッド経由でテストできるからです。プライベートメソッドは実装の詳細であり、自動テストのターゲットとなる「外部から見た振る舞い」ではありません。 ただし、この議論にはプロダクトコードもテストコードも自分で書いていることという前提があります。プロダクトコードに手を入れられず、テストコードも無いレガシーコードに対しては、リフレクションは強力な手段です。 プライベートなメソッドのテストに関しては、4つの考え方があります。 パブリックメソッド経由でテストする 別クラスのパブリックメソッドとする テスト対象の可視性を(やや)上げる プライベートのまま、リフレクションでアクセスしてテストを書く パブリックメソッド経由でテストする 多くの場合、そのクラスのパブリックメソッド経由でプライベートメソッドのテストも同時に行えます。テストできているか不安があるならテストカバレッジを確認しましょう。
646 名前:デフォルトの名無しさん [2020/07/04(土) 11:52:44.14 ID:pmIasW6W.net] >>617 privateのテストはprivateを直接テストしないとunit testにならないよ
647 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:52:52.72 ID:M3d71N9d.net] >>622 > unit testは最小単位だから、世界共通の定義 > publicを経由してたら内部でどんなにprivateなメソッドを呼び出しまくってても > unit testになるなんて、定義はどこにもないのでpublic経由はunit testに当てはまらない それはお前の定義であって、なんの根拠もないことはわかってる
648 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:53:29.28 ID:M3d71N9d.net] >>625 > privateのテストはprivateを直接テストしないとunit testにならないよ 何度も「根拠を言わないことを繰り返す」のは 根拠がないからってことだよねw
649 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:53:30.11 ID:czCytfqY.net] >>615 <
650 名前:a href="../test/read.cgi/tech/1592491656/605" rel="noopener noreferrer" target="_blank" class="reply_link">>>605の皮肉と同じだよな。 テストのために、コード書き換えてどうするんだよってね。 [] [ここ壊れてます]
651 名前:デフォルトの名無しさん [2020/07/04(土) 11:53:42.19 ID:pmIasW6W.net] >>624 誰だよそれ、YouTuberか? 権威主義的に誰かにすがりつくような真似をするな!
652 名前:デフォルトの名無しさん [2020/07/04(土) 11:54:47.69 ID:pmIasW6W.net] >>627 根拠は示したけどね、理解する気がないだけなんじゃない?
653 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:54:52.11 ID:M3d71N9d.net] >>628 > テストのために、コード書き換えてどうするんだよってね。 お前の目的は、テストがしづらい複雑なコードを変えないことなの?(笑) それともちゃんとテストが出来るコードを開発することなの? どっちなのさ 目的を理解してるか?
654 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:55:05.15 ID:MJUVFEDB.net] 「メソッド単位のunit テストを強制されてるのです」ww
655 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:55:51.40 ID:M3d71N9d.net] >>628 > 誰だよそれ、YouTuberか? え? t-wadaさんを知らないってそれまずくね?w https://twitter.com/t_wada プログラマ。TDD 実践者。power-assert-js 作者。 『テスト駆動開発』『プログラマが知るべき97のこと』『SQLアンチパターン』を翻訳/監訳しました。 (deleted an unsolicited ad)
656 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:56:33.70 ID:M3d71N9d.net] プログラマでテスト駆動開発者の@t_wadaさんをお招きした 社内勉強会での様子をお届け!#メルカリな日々 https://mercan.mercari.com/articles/19386/
657 名前:デフォルトの名無しさん [2020/07/04(土) 11:56:48.02 ID:pmIasW6W.net] >>632 TDDとか知らないの?
658 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:57:31.94 ID:czCytfqY.net] >>631 おめーこそ、テストの目的を理解してんのか、カス。 privateが記述されているってことは、外部から呼び出したら駄目なメソッドだ。 それを外部から呼び出して単体テスト合格とかふざけんな。 テストなめてんだろ。
659 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:58:00.26 ID:M3d71N9d.net] >>635 TDDで有名な人の名前って知ってる? t-wadaのブログ https://t-wada.hatenablog.jp/entry/should-we-test-private-methods#%E3%83%91%E3%83%96%E3%83%AA%E3%83%83%E3%82%AF%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E7%B5%8C%E7%94%B1%E3%81%A7%E3%83%86%E3%82%B9%E3%83%88%E3%81%99%E3%82%8B https://twitter.com/t_wada プログラマ。TDD 実践者。power-assert-js 作者。 『テスト駆動開発』『プログラマが知るべき97のこと』『SQLアンチパターン』を翻訳/監訳しました。 > 私の回答 > 短くまとめると、プライベートなメソッドのテストを書く必要は 無い と考えています。 > > パブリックメソッド経由でテストする (deleted an unsolicited ad)
660 名前:デフォルトの名無しさん [2020/07/04(土) 11:58:12.80 ID:pmIasW6W.net] >>633 有名な人を自分は知ってるんだ、だから自分が正しいんだって論旨かの? その人のことを君は知ってるんだ、すごいねwww
661 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:58:45.56 ID:M3d71N9d.net] >>636 > おめーこそ、テストの目的を理解してんのか、カス。 > privateが記述されているってことは、外部から呼び出したら駄目なメソッドだ。 ↑それ(外部から呼び出したらだめだ!)はテストの目的じゃないよw
662 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:59:28.07 ID:czCytfqY.net] で、でたー!!! 有名人の権威に頼る詭弁! 流石、詭弁のプロッ!
663 名前:デフォルトの名無しさん [2020/07/04(土) 11:59:33.33 ID:pmIasW6W.net] >>637 知らない、誰それ、興味もない 人の名前覚えて品質の高いプログラム作れるようになるわけじゃないし そういうこと頑張ってるのってただの意識高い系じゃない?www
664 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:59:35.76 ID:M3d71N9d.net] >>638 > 有名な人を自分は知ってるんだ、だから自分が正しいんだって論旨かの? そこはさぁ、専門家が言っていることは正しいんだって言うべきじゃね?w 専門家以外に、誰を信じればいいのか知らんが
665 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:00:04.79 ID:M3d71N9d.net] >>641 つまりそういうこと。お前は「テスト技術」に興味がない
666 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:01:48 ID:M3d71N9d.net] なぜ日本でTDDの専門家といって一番目に出てくるような人を知らないで テストの話について語っているのか? 勉強したら必ず何度も目にする名前だろうに
667 名前:デフォルトの名無しさん [2020/07/04(土) 12:05:38.40 ID:pmIasW6W.net] >>643 僕は@t_wadaさんを知らないだけですよ 有名な人の名前を知ってるから自分はテスト技術に興味があって正しい知識を持ってるんだって思ってる? 論理を無視した権威による詭弁としか思えないし、それってただのマウンティングにしかならないんじゃないですか? 俺はt_wadaさんのこと知ってんだぞ!!おめーどーなっても知らねえからな!みたいな中卒ヤンキーのマインドを お持ちなのはわかったけど、議論の向き先としてそっちで良いのって僕は思いましたよ
668 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:06:25.67 ID:M3d71N9d.net] > 僕は@t_wadaさんを知らないだけですよ その意味がわかってないんだろ? お前は勉強した必ず目にする名前を知らないって言ってるんだよ つまり勉強したことがないってこと
669 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:07:22 ID:XvIYAIJA.net] いいんじゃね、全てのメソッドをテストしたけりゃすればw ただそれを強制されてることが一般的だと思って奴がいるのは滑稽だなw
670 名前:デフォルトの名無しさん [2020/07/04(土) 12:08:56 ID:pmIasW6W.net] >>646 人の名前覚えて悦に入る人の心境がわからないんだよなー 僕はプログラムのことにしか興味がないから 誰がそれを書いたのかよりも書いてある内容の方に興味がある 執筆者の名前を覚えて勉強した気になってるだけじゃないの?
671 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:09:30.14 ID:M3d71N9d.net] パブリックメソッド経由でテストする 多くの場合、そのクラスのパブリックメソッド経由でプライベートメソッドのテストも同時に行えます。 テストできているか不安があるならテストカバレッジを確認しましょう。 別クラスのパブリックメソッドとする プライベートなメソッドのテストを書きたいということは、実はテスト対象の責務が多すぎることを 示唆している場合があります。テストがどうしても書きたい場合は、その責務はテスト対象の プライベートな振る舞いではなく、他の誰かのパブリックな振る舞いなのでしょう。テスト対象の プライベートメソッドを「クラスの抽出」や「メソッド/関数の移動」を使って、テスト対象の コラボレータのパブリックメソッドとして抽出し、普通にパブリックメソッドとしてテストしましょう。 テスト対象の可視性を(やや)上げる 例えば Java では、同一のパッケージからのみアクセスできる可視性があり(正式名称ではありませんが 「パッケージプライベート」と呼ばれます)、テストを同一パッケージに配置することでテストから アクセスできるような設計を行うことがあります。(ただし、この質問の場合は JavaScript なので、この手段はとれません) プライベートのまま、リフレクションでアクセスしてテストを書く リフレクションは最後の手段であり、強力な手段でもあります。プロダクトコードに手を入れることが できない状況や、レガシーコード(テストコードの無いコード)に対する「仕様化テスト(Characterization Test)」を 書いているような状況では、リフレクションは唯一の、かつ強力な手段になります。プライベートメソッドに テストを書くことのデメリットを理解しつつ、黒魔術の強力さを堪能しましょう。 (ただし、この質問の場合は JavaScript なので、この手段はとれません。JavaScript は比較的緩い言語ですが、クロージャの情報隠蔽は非常に強固です) まとめ 繰り返すと、プライベートなメソッドや関数をテストする必要は無いと考えています。プライベートなメソッドは、実装の詳細であるからです。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
672 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:10:37.41 ID:M3d71N9d.net] >>648 > 誰がそれを書いたのかよりも書いてある内容の方に興味がある >>649 にあなたが興味があるはずの「内容の方」書きました。 本当に興味があるなら読んでね(読まないだろうけどw)
673 名前:デフォルトの名無しさん [2020/07/04(土) 12:14:01.28 ID:pmIasW6W.net] >>650 著作権法に違反してない? 大丈夫? 僕はt_wadaさんを知らないし、信奉する立場でもないので t_wadaさんがそう言ってるからそうなんだと思うことはないよ 内容に興味があるっていうのは、書いてあることをそっくりそのまま 自分の考えにするということではなくて自分の経験や知識に照らし合わせて 自分の考えを持つってことだよ 僕はその文章を読んでprivateメソッドをテストするべきだと思った
674 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:15:48.22 ID:M3d71N9d.net] > 著作権法に違反してない? 大丈夫? もはや技術の話に反論できなくなったか 引用の範囲で著作権は関係ないな(爆笑) > 僕はt_wadaさんを知らないし、信奉する立場でもないので あのさぁ、お前。「t_wadaを知らない」という人の話じゃなくて その人が言った内容についての話をしろよ
675 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:16:19.37 ID:M3d71N9d.net] > 僕はその文章を読んでprivateメソッドをテストするべきだと思った それはあなたの感想です。考えは何も述べていません。
676 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:18:15.28 ID:czCytfqY.net] >>639 > ↑それ(外部から呼び出したらだめだ!)はテストの目的じゃないよw 別に、デバッグ目的で一時的にprivateメソッドを呼びたいのなら、勝手に呼んでどうぞ。 だが、テスト工程...特に単体テストでprivateをpublicにするのはアウト。 本来、呼ばれないはずのprivateだったメソッドが呼ばれてしまえば、本来、不合格だったはずのカバレッジテストに合格してしまう可能性が出てくるし、privateメソッドを呼んだことで、本来ありえないクラス内部状態を作ってしまったら、単体テストの結果も変わってしまう。 テストは本番と同じ状態を保たないと駄目だよ。 プログラマーの開発工程におけるデバッグ及び動作確認とテストを混同させていないか?
677 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:19:20.76 ID:XvIYAIJA.net] 最後の行ありそう
678 名前:w [] [ここ壊れてます]
679 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:19:46.76 ID:M3d71N9d.net] >>654 > だが、テスト工程...特に単体テストでprivateをpublicにするのはアウト。 ウォーターフォール開発? テストで問題が出ても問題を上流に戻したらだめって バグが出ても直したらいかんのかよw
680 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:20:53 ID:M3d71N9d.net] >>654 > プログラマーの開発工程におけるデバッグ及び動作確認とテストを混同させていないか? 今はプログラマーの開発工程におけるデバッグの話ですよ? 動作確認でprivateメソッドを呼んでテストなんてしませんから
681 名前:デフォルトの名無しさん [2020/07/04(土) 12:21:57 ID:pmIasW6W.net] >>652 大丈夫かなって正直に思っただけ、君が引用だと思っててもt_wadaさんが勝手に転載してんじゃねえ ぶっ殺すぞと思ってたらやばいじゃん、t_wadaさんって人を僕は知らないから 君がすごくぶっ殺されたりとかしないかなって思っただけ t_wadaさんの話を振ったのは君ですよ t_wadaさんを知らないのかー遅れてるーうひょーって有頂天になって書き込んでたのは君ですよ 僕は内容の話をしましたよ
682 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:22:14 ID:czCytfqY.net] > テストは本番と同じ状態を保たないと駄目だよ。 これを曲解されても困るから補足説明するけど、単体テストって、クラス単体のテストのことな? クラスを動かすための環境は自由に変えてもいいけど、クラスそのものを弄りかえるなって意味だからな?
683 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:24:12.62 ID:xAj06qrt.net] テストがでかけるアサートと本番動作は普通は異なるがな。 なんでも統一させようとして無理が出るから public, privateの議論はくだらんなと思うわけだ。
684 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:28:01.42 ID:czCytfqY.net] >>657 >>631 でなんで、俺に反論した。
685 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:33:59.87 ID:M3d71N9d.net] >>658 やっぱりまだ人の話を続けるんですねw t_wadaさんが言った「内容」の話をしましょうね 負け組おじさんw
686 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:34:18.71 ID:M3d71N9d.net] >>661 知らんがなw
687 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:35:58.47 ID:M3d71N9d.net] >>660 クラスを動かすための環境というのはクラスの外界ってことはわかってるか? クラスの外界は変えていいから、テストコードから呼び出すし クラスの中で呼んでいる外界をモックやスタブで置き換えていいんだよ
688 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:37:35.05 ID:exw+beGf.net] テストの前提として、テストされるコードをいじってはいけない テストのためにコードをいじってテストが終わったらコードを戻すんだと 本来のコードが仕様通り動くことが保証できない いじるのなら納品物が変わってくる
689 名前:デフォルトの名無しさん [2020/07/04(土) 12:38:43.12 ID:pmIasW6W.net] >>662 t_wadaさんを知らないのかーって言ったのは君で これがt_wadaさんの神々しい高貴な文章なんだーと引用したのは君じゃん 僕はそれを読みました。読んだ感想を今から言います。よく聞いてください。 privateメソッドをテストするべきだと思いました。
690 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:43:46.70 ID:M3d71N9d.net] >>665 > テストの前提として、テストされるコードをいじってはいけない > テストのためにコードをいじってテストが終わったらコードを戻すんだと いるじもなにもコードなんか変更しないだろ
691 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:44:39.72 ID:M3d71N9d.net] >>666 だからお前の感想は聞いてないって言ったよね? 少しはまともな意見も言えるかと思えば感想しかいない。 まあ意見を言った所で専門家よりも説得力がでるとは思えないがなw
692 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:47:54.13 ID:9ghyGMpS.net] >>654 ユニットテストする時は原則毎回新しいインスタンス作るので内部状態はリセットされるよ。 シングルトンがユニットテストやりにくいって言われる理由はこれ。
693 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:48:05.39 ID:M3d71N9d.net] >>666 > t_wadaさんを知らないのかーって言ったのは君で それは違うよねw 俺がとある専門家の「意見」を持ってきたら、 そいつは誰だーって言い出したのはお前だよねw ↓はい証拠 629 名前:デフォルトの名無しさん[] 投稿日:2020/07/04(土) 11:53:42.19 ID:pmIasW6W [22/31] >>624 誰だよそれ、YouTuberか? 権威主義的に誰かにすがりつくような真似をするな!
694 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:58:30.51 ID:wkevF9GB.net] privateメソッドだからテストしないとか言ってるやつはキチガイ 早く死んでね
695 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 13:01:25.78 ID:M3d71N9d.net] 専門家の意見としては パブリックメソッド経由でテストする 多くの場合、そのクラスのパブリックメソッド経由でプライベートメソッドのテストも同時に行えます。 テストできているか不安があるならテストカバレッジを確認しましょう。 別クラスのパブリックメソッドとする プライベートなメソッドのテストを書きたいということは、実はテスト対象の責務が多すぎることを 示唆している場合があります。テストがどうしても書きたい場合は、その責務はテスト対象の プライベートな振る舞いではなく、他の誰かのパブリックな振る舞いなのでしょう。テスト対象の プライベートメソッドを「クラスの抽出」や「メソッド/関数の移動」を使って、テスト対象の コラボレータのパブリックメソッドとして抽出し、普通にパブリックメソッドとしてテストしましょう。
696 名前:デフォルトの名無しさん [2020/07/04(土) 13:02:51.44 ID:pmIasW6W.net] >>670 君が先にその人を出して 僕が誰それなんでそんなの書いたのって聞いただけだよ そしたら君がt_wadaを知らないのかーって有頂天になったんじゃん 君はt_wadaさんに憧れてるんでしょ? だからt_wadaさんが書いた文章を引用したんでしょ 憧れとは理解とは最も遠い感情だってプリキュアが言ってました 僕が誰に憧れてるかはわかりますね?
697 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 13:06:20.56 ID:M3d71N9d.net] >>673 > 僕が誰それなんでそんなの書いたのって聞いただけだよ だから人に興味があるってことだよね? 無名の人なら、そんな無名なんか知るかー 有名な人なら、権威にすがるなー っていうんでしたっけ?w どちらにしろ意見に興味がなく 最初から「人」に文句をつけようと思って、誰か聞いたんでしょ?
698 名前:デフォルトの名無しさん [2020/07/04(土) 13:10:46.18 ID:pmIasW6W.net] >>674 t_wadaのブログってリンク提示されてもなにそれとしか思わないから 君がt_wada本人でこれが僕の考えだって示したならなるほどそういうことか privateメソッドはテストするべきだって思うけど 議論の最中にt_wadaのブログを出されても何いってんだこいつとしか思わない よくよく話を聞いてみると君はt_wadaさんのことが大変気に入っていて 憧れていてt_wadaさんの言うことは絶対だと思っている 君はt_wadaさんの権威にすがってるだけのつまらない人間なのじゃないかと僕は疑っています
699 名前:デフォルトの名無しさん [2020/07/04(土) 13:12:22.76 ID:pmIasW6W.net] 外人が書いた本を翻訳しただけで専門家でもなんでもないんじゃない?
700 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 13:12:24.10 ID:M3d71N9d.net] > t_wadaのブログってリンク提示されてもなにそれとしか思わないから はい、内容を呼んでないと自白しましたw なんのために内容の一部まで引用したと思ってるんでしょうかね 読まずに誰それと「人」に文句をつけるための 質問しかしませんでした。
701 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 13:12:47.77 ID:M3d71N9d.net] >>676 お前の希望を言われたもなぁw
702 名前:575 mailto:sage [2020/07/04(土) 13:13:09.28 ID:sra5+07B.net] なんで今朝の575からこんなに進んでるの...
703 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 13:13:57.68 ID:MJUVFEDB.net] 子供の喧嘩ですw
704 名前:デフォルトの名無しさん [2020/07/04(土) 13:13:59.57 ID:pmIasW6W.net] >>677 どうしてその内容を引用したの? 君はそれが正しいと思ったの? その根拠は提示できる? できないでしょ、君はt_wadaを専門家だと思ってて 専門家の言うことは正しいのだ、だから内容が正しいのだと思い込んでいる だからその内容を引用して何かを示した気になってるだけ
705 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 13:14:24.44 ID:M3d71N9d.net] >>679 根拠ない主張を繰り返すだけのやつが登場するとそうなるよw
706 名前:デフォルトの名無しさん [2020/07/04(土) 13:14:41.46 ID:pmIasW6W.net] >>678 外人が書いた本を翻訳したら専門家なのか? そっちの方が希望じゃん
707 名前:デフォルトの名無しさん [2020/07/04(土) 13:15:16.84 ID:pmIasW6W.net] >>682 専門家という肩書の権威にすがりつく君のことかな?
708 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 13:15:33.49 ID:M3d71N9d.net] >>681 正しい根拠はすでに上の方で何度も言ってるじゃんw それを補完するために専門家の意見を持ってきただけで じゃあ反対にお前の言うことが正しいという根拠はなんだよ?
709 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 13:15:46.59 ID:xAj06qrt.net] >>665 その辺は結局組織がどうコードを管理するかってだけの話だ。 バカみたいにがんじがらめにした結果誰もコードをいじらない(リファクタリングしない) ってことにしかならん。
710 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 13:16:11.64 ID:M3d71N9d.net] >>683 > 外人が書いた本を翻訳したら専門家なのか? そっちの方が希望じゃん 翻訳「も」してるだけだろw
711 名前:デフォルトの名無しさん [2020/07/04(土) 13:17:04.15 ID:pmIasW6W.net] >>668 t_wadaさんの文章はt_wadaさんの感想でしかないよ
712 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 13:17:18.71 ID:M3d71N9d.net] どうやら翻訳は副業らしいなw
713 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 13:18:06.68 ID:M3d71N9d.net] >>688 意見と感想の違いぐらいつけようよw 話は簡単じゃないか t_wadaさんの意見と お前の感想 説得力があるかどうかだよ
714 名前:575 mailto:sage [2020/07/04(土) 13:18:30.04 ID:sra5+07B.net] とりあえず、落ち着け。 議題がよくわからんが、落ち着け...落ち着くのだ。
715 名前:デフォルトの名無しさん [2020/07/04(土) 13:19:53.55 ID:pmIasW6W.net] >>687 いやいや翻訳だけが全実績じゃん t_wadaさんがprivateメソッドをテストせずにとても すばらしいシステムを構築していま全世界で使われてますってことないじゃん 翻訳したからまるで本物の執筆者のように思われてあたかも専門家のように思い込まれてるだけで 専門家でもなんでもなくただの翻訳者だよ
716 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 13:20:32.65 ID:MJUVFEDB.net] いいんだよ、元から不毛なネタのスレだw
717 名前:デフォルトの名無しさん [2020/07/04(土) 13:21:46.90 ID:pmIasW6W.net] >>690 君が説得力を
718 名前:感じたら意見になり、 説得力を感じなかったら感想になるってだけじゃんそれ なにそのガバガバな日本語運用 わかりましたでは今から僕が君を説得してみせます、よく聞いてください privateメソッドはテストするべきです [] [ここ壊れてます]
719 名前:575 mailto:sage [2020/07/04(土) 13:21:53.40 ID:sra5+07B.net] >>693 それもそうか(諦め) 内容は読んでないけど、まぁ、ROMるか。
720 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 13:22:11.62 ID:M3d71N9d.net] >>692 なんでググらないでウソ書くの? そうやって他の人を騙そうとしてるでしょ https://t-wada.hatenablog.jp/entry/clean-code-that-works 職業はコンサルタントであり、プログラマです。最近では技術顧問としてもいくつかの会社を支援しています。 また、自分の自由になる時間には、オープンソースソフトウェアの開発を行っています。 本業はプログラマでありコンサルタントですが、副業としては技術書の出版、具体的には監訳や翻訳に関わっています。 JavaScript でテストを書く際のハードルを大幅に下げるために開発した power-assert は、 Mocha や Jest と組み合わせて使え、 AVA には既に内蔵されており、ありがたいことに世界中で使われるプロダクトまで育ちました。 ひとつ例を挙げるなら、アリババグループで採用頂き、アリペイやアリババクラウドのテストに使われているという話です。 んで、こういう人に比べて、お前はなにかすごいことしたの?
721 名前:デフォルトの名無しさん [2020/07/04(土) 13:25:12.35 ID:pmIasW6W.net] >>696 営業努力の賜物やろな、頑張ってるんやなt_wadaさん 僕がなにかしたのかという質問ですが僕はすごいことを発見しました privateメソッドはテストした方が良いです
722 名前:デフォルトの名無しさん [2020/07/04(土) 13:25:49.67 ID:pmIasW6W.net] ほんまt_wadaさん好きやな
723 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 13:26:38 ID:M3d71N9d.net] >>698 t_wadaさん以外にすごい人がいたら教えて下さいw
724 名前:デフォルトの名無しさん [2020/07/04(土) 13:31:25 ID:pmIasW6W.net] >>699 他人に憧れをいだいて必要以上に持ち上げるのが僕は気持ち悪く感じます 僕はすごい人ですが、君に憧れられるのは気持ち悪いです、なのでごめんなさい
725 名前:デフォルトの名無しさん [2020/07/04(土) 13:31:55 ID:pmIasW6W.net] 振ってしまってなんかごめんなさい
726 名前:デフォルトの名無しさん [2020/07/04(土) 13:33:19 ID:pmIasW6W.net] 他人を必要以上に持ち上げるのって自分に自信がない人がやりがちなので アドバイスするとしたら色々経験したがいんじゃないかということですね
727 名前:デフォルトの名無しさん [2020/07/04(土) 13:34:54.50 ID:KKcCItOc.net] IT掲示板群 ttp://x0000.net/forum.aspx?id=15 学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net 数学 物理学 化学 生物学 天文学 地理地学 IT 電子 工学 言語学 国語 方言 など simulationライブラリで純粋な関数式プログラミングをする ttp://x0000.net/topic.aspx?id=3631-0 UIライブラリ (C#, 2D) を作ったよ ttp://x0000.net/topic.aspx?id=3688-0 連続と離散を統一した! ttp://x0000.net/topic.aspx?id=3709-0 4Dエンジン(画像有り) ttp://x0000.net/topic.aspx?id=3677-0 matrixのライブラリ ttp://x0000.net/topic.aspx?id=3711-0 ある強力なFor関数 ttp://x0000.net/topic.aspx?id=3630-0 SQLライブラリ ttp://x0000.net/topic.aspx?id=3675-0 ☆ VMを書いた(C#) * x86ではない! ttp://up.x0000.net/files/TSimulang.zip ☆ malloc / free を実装してみた (C#) ttp://up.x0000.net/files/TMallocTest.zip
728 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 13:48:28.05 ID:iuca8iKQ.net] 根拠が聞けるかなと思ったターンで 他人の引用を持ってきて権威に頼っただけである場合 議論は終了である 続ける価値がないから
729 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 13:50:52.32 ID:M3d71N9d.net] いえ、自分と同じ意見を言ってる人を持ってきただけなので 話は続いてますよ? でもなぜか、話の続きをやめてしまっているのです。 なぜでしょうね(笑)
730 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 14:09:00.83 ID:xhESn47n.net] プログラム板でコード使って語りもしない時点で両者どちらも無能 プログラマならコードで主張
731 名前:デフォルトの名無しさん [2020/07/04(土) 14:17:35.76 ID:pmIasW6W.net] >>706 有能さんあざーす!コードどこ?
732 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 14:19:05.65 ID:JeoapmHS.net] privateメソッドとしてどの程度複雑なことをやらせるか、privateメソッドをどの程度使うかについて、感覚の違う2つのスタイルがあるんじゃないか? 一方の極は、privateメソッドには極めて単純なことしかさせず、少しでも複雑な内容なら(他のヘルパークラス等の)publicメソッドに切り出すスタイル。 「privateはpublic経由でのみテストする(直接はテストしない)」という方針を採る場合には、privateメソッドの内容は非常にシンプルな内容に限らざるを得ないし、逆にそうしないと>>555 指摘の組み合わせ爆発の問題を回避できない。 >>624 と>>649 で紹介されている議論や、>>588 はこの立場なんだろう。 このスタイルでは、下記のスタイルでは1つのprivateメソッドで処理できる内容を、複数のクラスに属するメソッドの協調関係で処理することになる。 これを適切な機能分化がされていると肯定的に捉えるか、必ずしも汎用性があるわけではない小さなヘルパークラスが増えることになり、見通しが悪くなると否定的に捉えるかは考え方によるだろう。 もう一方の極は、privateメソッドだからといって、内容をシンプルに限らなければいけない必然性はないというスタイル。>>589 は、こちらの立場なんだろう。 このスタイルでは、public経由でprivateのテストをするというのは現実的ではないから、privateメソッドでも直接テストの対象とすることが必要になる。言語機能の関係でprivateを直接テストすることが難しい場合には、テストのやり方に工夫が必要になる。 メリット・デメリットは前記のスタイルの反対。 こんなふうに整理できるんじゃないかと思うが、どうだろう。
733 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 14:19:16.92 ID:xhESn47n.net] >>707 主張したいことがあるんでないの? それを示すコードもあるやろ?
734 名前:デフォルトの名無しさん [2020/07/04(土) 14:20:14.26 ID:pmIasW6W.net] >>709 でも僕無能だからコードないよ 君有能だからコードあるよ 早く出すよ
735 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 14:22:23.00 ID:xhESn47n.net] >>710 俺は別にプログラムのこのスレタイについて主張したいことないからなあw 君はプログラマでプログラムについて何か主張したいんだろ?
736 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 14:23:09.56 ID:kiJuYkd6.net] privateメソッドだからテストしないとか言ってるやつはキチガイ 早く死んでね
737 名前:デフォルトの名無しさん [2020/07/04(土) 14:23:22.38 ID:pmIasW6W.net] >>711 関係ないよ、早くコード出すよ
738 名前:デフォルトの名無しさん [2020/07/04(土) 14:23:44.26 ID:pmIasW6W.net] 早くコードだすよ!
739 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 14:27:56.17 ID:xhESn47n.net] >>714 あーこっちがきちがいだったかw 触れないようにするわ
740 名前:デフォルトの名無しさん [2020/07/04(土) 14:28:29.45 ID:pmIasW6W.net] www
741 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 14:33:12.47 ID:xhESn47n.net] このように、コードを使わず偏った主張するやつはだいたい頭がおかしい この板ではこうやって簡単にこういう奴をあぶり出しできるんよな
742 名前:デフォルトの名無しさん [2020/07/04(土) 14:34:10.41 ID:pmIasW6W.net] >>717 君、コード出してないよ コード出すよ
743 名前:デフォルトの名無しさん [2020/07/04(土) 14:34:57.85 ID:pmIasW6W.net] 早 く コ ー ド 出 す よ !
744 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 14:51:30.64 ID:xhESn47n.net] >>719 ^^
745 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 14:56:58.97 ID:M3d71N9d.net] >>708 > privateメソッドとしてどの程度複雑なことをやらせるか、privateメソッドをどの程度使うかについて、感覚の違う2つのスタイルがあるんじゃないか? privateとかpublicとか関係なく、複雑なことをやらせるなよ 関数はせいぜい一画面程度(50行)ぐらい、大半は20行以下にするもんだ
746 名前:デフォルトの名無しさん [2020/07/04(土) 15:00:38 ID:pmIasW6W.net] はいはいどうせt_wadaがそう言ってたんだろ
747 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 15:01:31 ID:M3d71N9d.net] >>722 また「人」の話かよw
748 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 15:02:35 ID:M3d71N9d.net] 権威ある専門家が言ってることだから間違ってます 俺は認めませーんって。どういう気持で言ってるんだろうねw
749 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 15:04:45.61 ID:M3d71N9d.net] 俺は「そいつは権威ある専門家
750 名前:セ!」って指摘しただけで 勝ったつもりにはなれないなぁ(笑) [] [ここ壊れてます]
751 名前:デフォルトの名無しさん [2020/07/04(土) 15:05:05.57 ID:pmIasW6W.net] t_wadaはなんて言ってるんだよ!
752 名前:デフォルトの名無しさん [2020/07/04(土) 15:05:39.57 ID:pmIasW6W.net] t_wada原理主義
753 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 15:06:52.47 ID:iuca8iKQ.net] 必死だなw
754 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 15:07:21.60 ID:gUMCer1d.net] 今までたくさんのキチガイPGを見たが privateメソッドだからテストしないとか言ってるやつだけは許さない テメーの金玉はここで潰す
755 名前:デフォルトの名無しさん [2020/07/04(土) 15:10:41.07 ID:pmIasW6W.net] ごりごりーごりごりー そうだ!すりつぶした粉で大根餅作ろうよ!
756 名前:575 mailto:sage [2020/07/04(土) 15:11:12.87 ID:sra5+07B.net] >>729 問題なのは、そのprivateの挙動をどうやって確認するのかって話なのかな? 単体テスト?総合テスト?それとも実装中しながらのデバッグ作業の話? 正直、未だにどこで揉めているのかわかりません。 誰か議題教えて。
757 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 15:13:12.65 ID:iuca8iKQ.net] >>731 > 正直、未だにどこで揉めているのかわかりません。 自転車置き場
758 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 15:14:01.93 ID:M3d71N9d.net] >>731 1. public、privateに限らずコードはシンプルにするべき 2. シンプルであるなら、privateはpublicメソッド経由でテストできる 3. publicメソッド経由でやったらprivateがろくにテストできないというなら設計が間違ってる 4. 設計上の問題はバグと言ってもいい。バグなんだから直せ ここまではあってる
759 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 15:17:09 ID:gUMCer1d.net] >>731 設計書見ろよゴミカス 書いてないなら死にまくれ
760 名前:575 mailto:sage [2020/07/04(土) 15:21:35 ID:sra5+07B.net] >>734 なんで、スレの流れに沿って説明しただけの俺がゴミカス呼ばわりされるのかもわからん。何このスレ。 >>576 >>578でも俺の意見ですらない部分に的外れな回答がつくし。
761 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 15:24:14 ID:M3d71N9d.net] 動けばOKって考えてる人がどれだけ多いかだな テストを自動化するという考えがない シンプルな設計をするという発想がない 動けば設計に問題はないと考えている
762 名前:デフォルトの名無しさん [2020/07/04(土) 15:29:27 ID:pmIasW6W.net] >>735 Welcome to Underground
763 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 15:32:02.34 ID:NXT3QGLz.net] >>733 あってるの1だけじゃないかw
764 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 15:34:57 ID:iuca8iKQ.net] 叩き台つくった(´・ω・`) https://ideone.com/1XhPwl
765 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 15:39:15 ID:e19OrKR5.net] なんかやべえ流れになってるな とりあえずつっこんどくと 1. unitテストの定義に世界共通の定義など存在しない 2. unitテストという単語はプロジェクト用語であり、プログラム用語ではない 3. マーティンはunitテストという単語と自動テストの単語わけたらいいんじゃない?と提案してる。xunit 4. publicとprivateはクラス設計のため、もっと言えばクラス間の責任範囲のために存在している 5. xunitテストのためだけにprivateをpublicにするのは誤り。本当にやりたければリフレクションでもすればいい 6. c2カバレッジ100%するかどうかは分野次第 7. 我々は十分なシステムを作るのが目的である。完璧なプログラムを作ることが目的ではない。そして十分な利益を獲得することが目的でもある
766 名前:575 mailto:sage [2020/07/04(土) 15:57:07.88 ID:sra5+07B.net] ちなみに、的はずれって100%君のことね。まぁ、そんなの今更どうでもいいか。 実際、クラスをどんな風にテストするのか興味あるね。
767 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 16:03:21.65 ID:e19OrKR5.net] やだよ組み込みが普通だと思ってる人との会話なんかしたくない
768 名前:575 mailto:sage [2020/07/04(土) 16:32:24 ID:sra5+07B.net] そんなー。
769 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 16:32:41 ID:IaMjsjOG.net] >>735 なんだ早く死ねよ
770 名前:575 mailto:sage [2020/07/04(土) 16:36:24 ID:sra5+07B.net] まぁ、Android開発(アセンブラレベルからJavaアプリレベル)をやってるから、たぶん、大丈夫なはず。 組み込み=staticおじさんのレッテルが貼られがちだけど、 私はstaticおじさんじゃないんだけどなー...
771 名前:。 まぁ、アセンブラレベルの階層になると、オブジェクト指向要素なんて微塵もないけど。 [] [ここ壊れてます]
772 名前:575 mailto:sage [2020/07/04(土) 16:37:37.70 ID:sra5+07B.net] >>744 みたいな知的障害者が時々沸くのはなんで?
773 名前:575 mailto:sage [2020/07/04(土) 16:46:14.68 ID:sra5+07B.net] もういいや。アホくさ。こんなスレ覗いたのが間違いだったな。 人生を無駄にした気分だ。 このスレを覗く時間を使って別して作業してた方が有意義だったよ。 >>744 君はID変えながら死ね死ね連呼しているみたいだけど、気を付けた方がいいよ。あばよ、中身がない死ぬべき技術者さん。
774 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 16:53:03.01 ID:4XE5L1k5.net] プ板、と言うか専門板なんてそれぞれの話題を餌にマウント取り合ったり罵り合ったりする所だから。 相手にしたら負け。
775 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 17:09:48.00 ID:O/jhkl6h.net] 言語の制約によって思考が制約されてる典型例 カマッてくれる人が量産されて>>1 が喜んでる
776 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 18:16:38.54 ID:sCZUG34Z.net] privateメソッドのテストしないとか言ってるカスとまともに会話するメリットないだろ
777 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 18:35:31.64 ID:gmurOIZf.net] まあテストやるって言ってもこれくらい意見が違って揉め事になるってのは 結構普通だったりするからそういう勉強にはなってるんでないの。
778 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 20:02:50.07 ID:M3d71N9d.net] このスレの結論 短くまとめると、プライベートなメソッドのテストを書く必要は 無い と考えています。 パブリックメソッド経由でテストする 多くの場合、そのクラスのパブリックメソッド経由でプライベートメソッドのテストも同時に行えます。 テストできているか不安があるならテストカバレッジを確認しましょう。 別クラスのパブリックメソッドとする プライベートなメソッドのテストを書きたいということは、実はテスト対象の責務が多すぎることを 示唆している場合があります。テストがどうしても書きたい場合は、その責務はテスト対象の プライベートな振る舞いではなく、他の誰かのパブリックな振る舞いなのでしょう。テスト対象の プライベートメソッドを「クラスの抽出」や「メソッド/関数の移動」を使って、テスト対象の コラボレータのパブリックメソッドとして抽出し、普通にパブリックメソッドとしてテストしましょう。 テスト対象の可視性を(やや)上げる 例えば Java では、同一のパッケージからのみアクセスできる可視性があり(正式名称ではありませんが 「パッケージプライベート」と呼ばれます)、テストを同一パッケージに配置することでテストから アクセスできるような設計を行うことがあります。(ただし、この質問の場合は JavaScript なので、この手段はとれません) プライベートのまま、リフレクションでアクセスしてテストを書く リフレクションは最後の手段であり、強力な手段でもあります。プロダクトコードに手を入れることが できない状況や、レガシーコード(テストコードの無いコード)に対する「仕様化テスト(Characterization Test)」を 書いているような状況では、リフレクションは唯一の、かつ強力な手段になります。プライベートメソッドに テストを書くことのデメリットを理解しつつ、黒魔術の強力さを堪能しましょう。 (ただし、この質問の場合は JavaScript なので、この手段はとれません。JavaScript は比較的緩い言語ですが、クロージャの情報隠蔽は非常に強固です) まとめ 繰り返すと、プライベートなメソッドや関数をテストする必要は無いと考えています。プライベートなメソッドは、実装の詳細であるからです。
779 名前:デフォルトの名無しさん [2020/07/04(土) 21:00:07.43 ID:42LT/T3f.net] >>752 三行以上は読んでもらえないから工夫が必要。
780 名前:デフォルトの名無しさん [2020/07/04(土) 21:07:29.85 ID:n1PM9L+Z.net] ガワだけのクラスが出来上がるな #include <iostream> using namespace std; class Test{ private: int methodPrivate(const int x)const{ return 2*x; } public: int method(const int x)const{ return methodPrivate(x); } }; int main() { Test test; cout << test.method(3) << endl; return 0; } この調子で全部のメソッドにペアになるprivateメソッド作って徹底的に隠蔽してしまえば、相手から調査されることはない そして上流の方から指定されているメソッドはスッカラカン 実質的に何もしない 名前があるだけ この技法をprivate開発と名付けよう 相手側に技術が流出することがない
781 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 2
] [ここ壊れてます]
782 名前:1:08:27.02 ID:NXT3QGLz.net mailto: >>752 ×このスレの結論 ◯ぼくの主張の結論 [] [ここ壊れてます]
783 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 21:10:05.29 ID:NXT3QGLz.net] >>755 間違えた ×ぼくの主張の結論 ◯ぼくがまとめた、偉い人が書いた本の受け売り情報
784 名前:デフォルトの名無しさん mailto:age [2020/07/04(土) 21:41:09.24 ID:pmIasW6W.net] 本人の経験が感じられなくて薄っぺらいんだよなあ
785 名前:デフォルトの名無しさん mailto:age [2020/07/04(土) 21:43:15 ID:pmIasW6W.net] 僕の高い知性と豊富な経験に基づく主張を聞いて欲しい privateメソッドはテストした方がいい
786 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 21:56:15 ID:gmurOIZf.net] >別クラスのパブリックメソッドとする >プライベートなメソッドのテストを書きたいということは、実はテスト対象の責務が多すぎることを >示唆している場合があります。テストがどうしても書きたい場合は、その責務はテスト対象の >プライベートな振る舞いではなく、他の誰かのパブリックな振る舞いなのでしょう。テスト対象の >プライベートメソッドを「クラスの抽出」や「メソッド/関数の移動」を使って、テスト対象の >コラボレータのパブリックメソッドとして抽出し、普通にパブリックメソッドとしてテストしましょう。 これだけは意味ある意見ではあるな。他はカスみたいな理由だが。
787 名前:デフォルトの名無しさん [2020/07/04(土) 22:11:41 ID:42LT/T3f.net] カバレッジ測定ツール高いし持ってないので、private直接テストしたい。
788 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 22:19:33 ID:O/jhkl6h.net] >>759 >>プライベートなメソッドのテストを書きたいということは、実はテスト対象の責務が多すぎることを >>示唆している場合があります わかる >>コラボレータのパブリックメソッドとして抽出し、普通にパブリックメソッドとしてテストしましょう。 これは選択肢の一つであって常にそうすべきなわけではないんだよね クラスの分割基準とテストを書く書かないの基準は別だから
789 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 22:19:58 ID:O/jhkl6h.net] プライベートだとテストしにくいので、パブリックメソッドとして抽出し、普通にテストしましょう これが本音
790 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 22:47:43.56 ID:1l6Tw/KB.net] https://i.imgur.com/FG4MVEW.jpg
791 名前:デフォルトの名無しさん [2020/07/05(日) 00:43:13.75 ID:9F15TCk0.net] プライベートがテストできるということはホワイトボックスなわけでユニットテスト段階でしょ。 そもそもプライベートをテストするにはソース自体書き換えないと呼べないじゃん。 ソース自体書き換えてテストするようなことはビジネスの世界ではあんまり無いしテストと なったらブラックボックスが普通。 てかもはやテストの話でカプセル化やOO関係ないな。
792 名前:デフォルトの名無しさん [2020/07/05(日) 01:18:10.47 ID:LRfXHt7v.net] ホワイトやブラックについて語るのは時期が悪いというか、国家を危険にさらす可能性さえあるからね。 もう少し社会情勢に気を配ろうよ。
793 名前:デフォルトの名無しさん [2020/07/05(日) 01:32:28.51 ID:LRfXHt7v.net] 昔のホームページにはサイタマップというものがあった。
794 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 02:04:25.24 ID:9F15TCk0.net] 埼玉県民にはそこらへんの草でも食わせておけ
795 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 02:11:14.07 ID:58eR5uXa.net] >>764 > ソース自体書き換えてテストするようなことはビジネスの世界ではあんまり無いしテストと まさかpublic・privateメソッドのテストをテスト工程でやる、 public・privateメソッドを書いた人と別の人がやるって思ってないか? public・privateメソッドを実装中に、その作ったもののが正しく動くかどうか public・privateメソッドのソースを書いた人が、書いてる段階でテストするんだから 当然ソースを書いて(書き換えて)テストするに決まってるじゃん お前は、その後の(統合)テスト工程でソースコードを変えてテストとか言ってるだろw
796 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 02:46:27.47 ID:9F15TCk0.net] >>768 なんなのその口調気持ち悪い。 大規模開発だとテスト工程を別の人間が何度もやるのは当たり前だよ。 デベロッパ個人のテストはコーディングの範疇なのでもちろん個人ではやるが それほど大事ではない。 組み込みで車のブレーキ制御とかは全く別の話だろうがOOとかカプセル化とは 基本かけ離れた分野。
797 名前:デフォルトの名無しさん [2020/07/05(日) 02:48:43.07 ID:LRfXHt7v.net] テストしない理由を考えるのは。
798 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 02:50:28.66 ID:58eR5uXa.net] >>769 > 大規模開発だとテスト工程を別の人間が何度もやるのは当たり前だよ。 大規模開発だとpublicやprivateメソッドのテストを別の人がやるって? テストコード専用に書く人でもいるのかよw それはどこの話だ?事例の一つぐらい持ってきてから言え
799 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 02:51:54.42 ID:9F15TCk0.net] >>771 某アメリカ製のパッケージとかだな。 むしろテストコード専門に書く人いないのかよ。じゃあOOとかカプセル化とか 必要なほどの規模じゃないか体制がおかしいな。
800 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 02:53:01.58 ID:58eR5uXa.net] > 某アメリカ製のパッケージとかだな。 だから事例は?
801 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 02:54:30.54 ID:58eR5uXa.net] ユニットテストのコードを他の人が書いて、どうやってTDDをやるのか不思議なんだがw 先にテストコード書く人がテストコードだけ書いて、 これに通るように実装しろ! これがTDD(テスト駆動開発)だ! とか言ってる所とかでもあるんか? 事例を持ってきてくれ
802 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 02:56:40.99 ID:9F15TCk0.net] だからユニットテスト自体が少なくともビジネス分野では大事じゃないと 上にも書いてあるが。 事例なんか出せるわけないだろ。中の人なんだから。
803 名前:デフォルトの名無しさん [2020/07/05(日) 02:58:40 ID:LRfXHt7v.net] 製品についてネットに書き込むときは、法務と企画のハンコ必要なので。
804 名前:デフォルトの名無しさん [2020/07/05(日) 02:59:12 ID:LRfXHt7v.net] ちなみに法務俺、規格俺だけど。
805 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 03:03:18.34 ID:9F15TCk0.net] 今関わってる製品とかソース10万ファイルくらいあってそれぞれのファイルに 分岐なんか少なくとも数十から数百はあると思うが、その数百万から数千万、下手したら 億の分岐を全部全パターンテストするの? テストなんてそのあとファンクショナルやってリグレッションやってアクセプタンスやって ってあるのに、ユニットテスト「だけ」でそれでしょ? サグラダ・ファミリアかな?
806 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 03:03:49.83 ID:58eR5uXa.net] >>775 中の人だから事例が事例を出せないってことは、 お前の会社以外でやってないってことだろw
807 名前:デフォルトの名無しさん [2020/07/05(日) 03:04:01.72 ID:LRfXHt7v.net] 正しいとか正しくないとかどうでも良いので、privateのテストをさせてほしいものですね。
808 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 03:05:23.08 ID:58eR5uXa.net] >>778 > 今関わってる製品とかソース10万ファイルくらいあってそれぞれのファイルに > 分岐なんか少なくとも数十から数百はあると思うが、その数百万から数千万、下手したら > 億の分岐を全部全パターンテストするの? それユニットテスト関係ないよね? 手動で全パターンをテストするの? 答えはお前自身が言えるはずだよね?
809 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 03:06:25.42 ID:58eR5uXa.net] ユニットテストなんかしてねーよ ソース修正するたびに、 億の分岐全パターン手動テストしてるんだよ! って言ってほしいな? まだかな?
810 名前:デフォルトの名無しさん [2020/07/05(日) 03:13:56.54 ID:LRfXHt7v.net] けんか腰は知能が高いと言われるム板に似合わないんだよな。 ユーモアを交えて会話するべきだと思います。
811 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 04:06:24 ID:9F15TCk0.net] >>779 知ってる限りGAFAでもERP各社あたりでもやってないけどね。 試しに(ドイツだが)SAPあたりにカバレージどれだけですかって聞いてみれば? 何それ美味しいの?だよ。 まあこういう人は何言っても無駄だし下手に事実いうと発狂するからもう相手は おしまい。
812 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 04:11:13.84 ID:58eR5uXa.net] ではGoogleの事例 https://feb-acchan.hat enablog.com/entry/2018/03/11/214344 現状について Googleでは、420万ほどのテストが存在して、1日1億5千万テストケース 実行されていて(150million test execution/dayだからあってますよね?)、 1テストケースあたり35回実行されているらしいです。 そして、これらがすべて自動テストであり、手動テスト率が驚異の0%! ただし、UX系のテストは手動だそうです。 UIのテストなどは自動化できるが、UXはさすがにまだ人手とのことで、 人の感覚などが関係するUXテストがAIによってテスト可能で人の仕事が無くなるといった日はまだ到来していません。 自動テストですが、毎テストごとに420万テストケースを実行しているわけではなく、 全テストケースを実行するのは一定の間隔で、普段は修正に対して依存があるテストだけを実行しているそうです。
813 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 04:13:30.65 ID:58eR5uXa.net] Googleの考え方 https://www.publickey1.jp/blog/11/post_144.html テスターはデベロッパーがテストできるようにするのが仕事 このようにEngineering Productivityのメンバーのレポートラインと 所属を分けることのメリットを、Whittaker氏は次のように書いています。 ここにグーグルの品質管理の大事なポイントがあるようです。 一般にテストは製品開発の最後の段階で行われることが多く、製品チーム/開発チームの 中にテストチームを抱えても、テストフェーズ以外は手持ちぶさたになってしまうため、 多くの開発組織ではテストチームは製品チーム/開発チームとは別に存在し、 必要なときに登場してテストを行う、というケースがほとんどです。 ====以下重要==== ところがグーグルではEngineering Productivityに属する、テストのノウハウを持ち支援を 行うエンジニアたちは、前述のように各製品チームに所属しています。 そう、グーグルではテストチームではなく、製品チームが自身で品質管理を負っている。 各デベロッパは自身でテストすることを期待されている。テスターの仕事は、自動テストの インフラを確立することと、それによってデベロッパ自身がそれをプロセスの中で実行できるようにすること。 テスターはデベロッパーがテストできるようにするのだ。 各製品チームは、Engineering Productivityのメンバーの支援を受けつつ、自分たちの責任で テストを行わなければならない、ということがグーグルのテストを行う際のポリシーのようです。
814 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 04:14:26.63 ID:58eR5uXa.net] https://www.publickey1.jp/blog/11/post_144.html Whittaker氏はさらに次の記事「How Google Tests Software - Part Two」で、 エンジニアに与えられる3つの役割についても触れています。 Softweare Engineer in Test(SET) テストのしやすさ(Testability)にフォーカスした役割。デザインレビューをし、 品質やリスクをチェック。コードをテストしやすいようにリファクタリングする。 ユニットテストや、テストフレームワーク、自動テストも書く。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
815 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 04:16:28 ID:58eR5uXa.net] 「コードをテストしやすいようにリファクタリングする。」 っていうのがまさにprivateでテストしたいのに public経由でテストできない ならばテストしやすいようにリファクタリングしましょうって話になってる
816 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 04:18:26 ID:58eR5uXa.net] https://monoist.atmarkit.co.jp/mn/articles/1705/24/news008.html C/C++かつxUnit系ツールは、数分調べるだけでも数種類見つかります。 今回はその中の1つ「Google C++ Testing Framework(以下、GoogleTest)」の 使い方を紹介します。 Google Testとは、IT業界の巨人、グーグル(Google)製の 単体テストフレームワーク(C/C++用)です。MinUnitと比べて高機能で、 さまざまな使い道があります。ただし、MinUnit同様、テストコードを記述するため、 C/C++をある程度知ってることが前提です。
817 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 04:19:35 ID:9F15TCk0.net] >>785 テスト件数が問題なのではない。オートメーションすればファンクショナルレベル でのテストはいくらでも流せる。 新しいファンクション・メソッドを書くたびに、あるいは変更をするたびに 全ての条件を網羅して、それをテストケースにして、コード自体をモディファイして テストした後、結果をドキュメント化してまたコードを元に戻すということはやらないという話。 プライベートのファンクション・メソッド単位でC2100%テストしていくというのは そういうこと。
818 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 04:22:02 ID:58eR5uXa.net] 米Google、JavaScriptユニットテストフレームワーク「JS Test」をオープンソースで公開 https://mag.osdn.jp/11/10/03/1012250 米Googleは9月29日、JavaScriptユニットテストフレームワーク「Google JS Test」を発表した。 元々はGoogle社内のプロジェクトで利用されていたもので、ライセンスはApache License 2.0。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
819 名前:デフォルトの名無しさん [2020/07/05(日) 04:27:51 ID:9F15TCk0.net] いや、だからそういうツールがあるのなんて常識だが、privateはテストしない。 上にも書いてるがprivateはソース自体弄らないとテスト自体できないわけで、 そういうツールが自動でソースを弄ってコンパイルし直してprivateのメンバーを 全パターンするわけでは、当たり前だけど、無い。 クラス単位でパブリックのメソッドに対してテストコードもセットで書くということは 当然ある。
820 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 04:29:16 ID:58eR5uXa.net] facebook / j
821 名前:est https://github.com/facebook/jest https://jestjs.io/ja/ Jest はシンプルさを重視した、快適な JavaScript テスティングフレームワークです。 [] [ここ壊れてます]
822 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 04:31:02 ID:9F15TCk0.net] 全くわかってないなこりゃ。
823 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 04:33:27 ID:58eR5uXa.net] 反論すりゃいいのにw
824 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 04:34:11 ID:58eR5uXa.net] 憶測に基づいた発言はいらないよ? 俺はGoogleやFacebookとユニットテストに関連する事例を上げただけ
825 名前:デフォルトの名無しさん [2020/07/05(日) 04:34:11 ID:LRfXHt7v.net] テストの専門家だからそう思うのでは。
826 名前:デフォルトの名無しさん [2020/07/05(日) 04:49:06.73 ID:LRfXHt7v.net] 完ぺきにテストしたからといって製品の完全性を保証することはできません。 したがってテストしないほうが良いのです。
827 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 04:52:22.10 ID:58eR5uXa.net] ほらなw 完璧にテストした所で落ちない飛行機はありません したがってテストしないほうがいいのです と言い始めた 事例と自分の考えの矛盾を正せず、頭が狂い始めた証拠。 ここから荒らしと変貌する前触れだな
828 名前:デフォルトの名無しさん [2020/07/05(日) 04:53:23.27 ID:LRfXHt7v.net] 食いついてきた。 嘘みたい。
829 名前:デフォルトの名無しさん [2020/07/05(日) 04:58:23.98 ID:LRfXHt7v.net] privateもテストさせていただけるとありがたいけど、禁止するのが正しいことになってるからな。
830 名前:デフォルトの名無しさん [2020/07/05(日) 04:59:58.66 ID:LRfXHt7v.net] Visualstudioのテストエクスプローラを使うと考えが変わるのでは。 道具の問題かもしれない。
831 名前:デフォルトの名無しさん [2020/07/05(日) 05:53:15.48 ID:9F15TCk0.net] ユニットテストというのはプロジェクトによってかなり幅があるわけで、 当たり前の話だがテストオートメーションのプログラムが勝手にコード 弄ってコンパイルしなおしてPrivateをテストするわけが無いのだよ。
832 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 06:05:37.56 ID:58eR5uXa.net] ↑みたいなことを言ってるやつがGAFAは〜と なんのソースもなしに言ってるわけだよ こんなやつの話を聞くやつがいると思うかね?
833 名前:デフォルトの名無しさん [2020/07/05(日) 06:06:03.12 ID:9F15TCk0.net] ずれるかもしれないが下のような場合、privateにnullを突っ込んだらヌルポだが privateをわざわざコード弄ってまで別にテストするようなことは少なくとも ビジネスソフトでは知ってる限り無い。組み込みとかは知らんし必要ならやれば良いけど。 class ChinTester { public void testChin(int[] len) { if (len==null){System.out.println("You are a woman"); return;} if (len.length<11){ uncS(len);} else{funcB(len);} return;} private void funcS(int[] len){ if (len.length<9){System.out.println("Smallest"); }else{System.out.println("Smaller");} return;} private void funcB(int[] len){ if (len.length<14){System.out.println("Medium");} else if (len.length<16){System.out.println("Bigger"); }else{ System.out.println("Wow!");} return;} }
834 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 06:21:04.56 ID:9F15TCk0.net] あと日本のNTTデータから降りてくるような大企業案件とかもやったことが無いので知らん。 アメリカのビジネス系一般の話。
835 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 06:25:10.48 ID:M+BkbwUs.net] >>805 そのコードを見ただけで素人ってわかるよw
836 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 06:27:32.73 ID:9F15TCk0.net] はいはいそうですね。
837 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 06:33:43.45 ID:M+BkbwUs.net] 1. 関数名が意味不明 2. インデントがめちゃくちゃ 3. スペースを入れる所が統一されていない 4. lenが配列なのはなんでだ? 5. nullを情報として扱うな 6. 戻り値なしなのに関数の最後でreturnを書くな 7. 数値(長さ?)判定と文字出力を同じ関数に同居させるな 8. テストするなら、長さを入力し文字列を返す関数を作れ なんでたったこれだけの関数で こんなにレビューの指摘項目が存在するんだかw
838 名前:デフォルトの名無しさん [2020/07/05(日) 06:38:43.59 ID:9F15TCk0.net] 口調が気持ち悪い人は相手しても仕方ないからほっとくとして、上の例だと(に限らず) funcSとfuncBをテストするためにはコード弄らなきゃいけないし、そもそもtestChin()で リクワイアメントとエッジケースは全てテストするんだから、無駄にテストが倍以上に なるしそれも手動になる。 普通のケースだとtestChinに対するテストコード書いて、変更があればそれを流す形になる。 上にさんざコピペが貼られたテストツールはそういうのを自動で流すツール。 テストケース流したいからfuncSとfuncBをパブリックにするというのはカプセル化 できてないし、ましてコード弄ってまでテストするのを手順化するというのは普通はやらない。 書いてる最中にコードちょろっと入れて確認するようなことはあって、それもユニット テストといえばユニットテストだが、手法としてプロジェクト単位で公式にやるような ものでは普通は無い。 車のブレーキ制御とかならそこまでやって欲しいが、OOとかカプセル化とはちょっと 違う話。
839 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 06:42:42.57 ID:M+BkbwUs.net] > funcSとfuncBをテストするためにはコード弄らなきゃいけないし、そもそもtestChin()で public経由でテストできるだろw
840 名前:デフォルトの名無しさん [2020/07/05(日) 06:45:32.12 ID:9F15TCk0.net] >public経由でテストできるだろw と、いうわけでPublicをテストすれば十分だしPrivateは(普通は)やらないという事を やっとご理解いただけたようですな。 >>768 ではこんな事言ってましたが。 >当然ソースを書いて(書き換えて)テストするに決まってるじゃん
841 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 06:47:04.12 ID:M+BkbwUs.net] >>810 他の言語を勉強したほうがいいぞ どうもお前は、絶対に来るはずがない値が引数に渡された時、 そのテストしろって言ってるようだからな 「絶対にありえない値」なんだから仕様なんて作らない 他の型がない言語だったら、引数に渡されるオブジェクトなんか それこそ無限に値なんてありえるだから privateでも、ソースコードを修正して引数渡せるなら そのテストをかけって言ってるようなもん
842 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 06:47:52.42 ID:M+BkbwUs.net] >>812 > と、いうわけでPublicをテストすれば十分だしPrivateは(普通は)やらないという事を 頭悪そうだなw この場合publicメソッドを呼んだらprivateメソッドを呼び出すんだから privateメソッドのテストになってるだろ
843 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 06:47:57.37 ID:9F15TCk0.net] 少なくともグーグルの面接で絶対こないからテストしないとか言ったら 速攻落ちるよ。むしろ絶対こないのをやるものだからね。
844 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 06:49:10.31 ID:M+BkbwUs.net] >>768 で > まさかpublic・privateメソッドのテストをテスト工程でやる、 > public・privateメソッドを書いた人と別の人がやるって思ってないか? > > public・privateメソッドを実装中に、その作ったもののが正しく動くかどうか > public・privateメソッドのソースを書いた人が、書いてる段階でテストするんだから > 当然ソースを書いて(書き換えて)テストするに決まってるじゃん と言ってますが、今の話と何の関係があるんですか? 「誰がテストするか」の話なんですが?
845 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 06:50:26.40 ID:M+BkbwUs.net] >>815 だからpublicメソッド経由でテストしてるじゃんw お前は、内部でprivateメソッドを呼び出しているから publicメソッドのテストには、privateメソッドがそんな値を返そうが そのテストは書かないのか?
846 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 06:53:15.16 ID:M+BkbwUs.net] 例えば>>805 の話だと testChinがpublicメソッド、そのメソッドのテストとして 引数に1(なんで配列か知らんが)となるものを渡したら Smallestが返ってくることというテストを書く それは実際には内部でprivateメソッドを呼び出しているのだからfuncSのテストになってる カバレッジを計測したら、privateメソッドであるfuncSの該当行は実行した(テストした)と計測される。
847 名前:デフォルトの名無しさん [2020/07/05(日) 06:54:07.51 ID:9F15TCk0.net] え、コーディング中にちょろっとコード書いて動作確認とかを「テスト」って 呼んでたの?そりゃ噛み合わないわ。 開発手法の話をしてる時に「テストする」というからにはテストケースを書いて、 手動にしてもコードにしても実行したログくらいは残すものだが。 君はメソッド作る時エッジケースやらネガティブテストやら考慮に入れつつケースを 書いて実行したログも残してるの?変更のたびにやるの?やらんだろ。
848 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 06:56:15.75 ID:M+BkbwUs.net] >>819 どれにレスしてるの? ユニットテスト(かつ自動テスト)の話しかしてないんだが お前がどこを呼んでそう思ったのか 具体的に指摘してみて
849 名前:デフォルトの名無しさん [2020/07/05(日) 06:56:44.73 ID:9F15TCk0.net] publicをテストしたらprivateも呼ばれてるからprivate単位でテストしてる!って ブレブレやなw publicから呼ばれないprivateなんて一体誰がなんのために書くんだよw
850 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 06:57:27.80 ID:M+BkbwUs.net] >>819 > 君はメソッド作る時エッジケースやらネガティブテストやら考慮に入れつつケースを > 書いて実行したログも残してるの?変更のたびにやるの?やらんだろ。 変更のたびって、お前変更のたびにメソッドの仕様が変わるのか? いきあたりばったりで開発してるんだな
851 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 06:58:49.78 ID:M+BkbwUs.net] >>821 最初からそう言ってるだろ? ブレるも何も、最初からそう言ってる ↓ > 私の
852 名前:回答 > 短くまとめると、プライベートなメソッドのテストを書く必要は 無い と考えています。 > > ほとんどのプライベートメソッドはパブリックメソッド経由でテストできるからです。プライベートメソッドは実装の詳細であり、自動テストのターゲットとなる「外部から見た振る舞い」ではありません。 [] [ここ壊れてます]
853 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 07:00:51.32 ID:M+BkbwUs.net] あ?まさかprivate関数の処理のテストをすればいいのに private関数単独ででテストしなきゃだめだって思ってるのかw あはは、関数単位でテストするのがユニットテストだって思ってるようだな こりゃ、お・わ・ら・い・だw
854 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 07:02:37.00 ID:BTTSshKd.net] メソッド単位でテストしろって言うのが組み込みおじさんだから話にならんよ
855 名前:デフォルトの名無しさん [2020/07/05(日) 07:03:05.56 ID:9F15TCk0.net] なんだこいつ気持ち悪い。
856 名前:デフォルトの名無しさん [2020/07/05(日) 07:07:17.25 ID:9F15TCk0.net] 日本語もjavaも通じないからどうにもならない。 突然噛み付いてくる気持ちの悪いのは100%の確率でおかしいな。
857 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 07:08:18.45 ID:M+BkbwUs.net] というふうに「技術」の話にレスができなくなったら 「人」(=俺)の話にすり替えるのが常套手段な
858 名前:デフォルトの名無しさん [2020/07/05(日) 07:13:21.25 ID:9F15TCk0.net] というかお前は誰だよ。Private単位でコード書き換えてもやるって言ってる 人間がいたからPrivate単位では通常のビジネス系ではやらないという流れなのに 突然「お前は素人だあ!」とか噛み付いてきても知らんがな。 タブもスペースもトランケートされる2ちゃんでインデントがとかくだらない ことでマウント取りにくる暇があったらまず日本語を学べ。 以上。
859 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 07:21:09 ID:BTTSshKd.net] 「privateメソッド」を直接テストしろって言う人はどうするのがいいって言うの? a 全てprivateメソッドに対しても外部にリフレクション等を使用したテストを書くべき b privateメソッドにアクセスできるクラスなどにpublicなテストコードを書くべき c もっと言い方法がある、こうだ!
860 名前:デフォルトの名無しさん [2020/07/05(日) 07:22:11 ID:LRfXHt7v.net] >>830 王家秘伝の技がある。
861 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 07:24:08 ID:M+BkbwUs.net] >>830 >>798 じゃねーの?w > 完ぺきにテストしたからといって製品の完全性を保証することはできません。 > したがってテストしないほうが良いのです。 つまり privateにしたらテストできません。だからしないほうがいいのです。 完璧にテストした所で落ちない飛行機はありません したがってテストしないほうがいいのです
862 名前:デフォルトの名無しさん [2020/07/05(日) 07:24:58 ID:9F15TCk0.net] しかしよくチンコのサイズテストwにマジで噛みつけるもんだ。
863 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 07:29:06 ID:M+BkbwUs.net] >>833 あ、そういうテストだったの?w コードしか見てないよw
864 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 07:30:17.21 ID:M+BkbwUs.net] Chinってちんこのことだったんだな funcSとかfuncBとかfoo、barみたいに意味がない単語じゃん コードがクソすぎて意味が伝わらないいい例だな
865 名前:デフォルトの名無しさん [2020/07/05(日) 07:34:08.81 ID:9F15TCk0.net] 無い場合You are a womanで9以下なら小さい、16越えりゃWow!で名前が チンテスターなんだからわかってる人間は多いだろうな。
866 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 07:36:44.58 ID:M+BkbwUs.net] >>836 じゃあint型の配列のlen(長さ)ってどういうこと? 配列がnullなら女で配列が複数あれば男? 何が複数なの?
867 名前:デフォルトの名無しさん [2020/07/05(日) 07:36:59.87 ID:9F15TCk0.net] ちなみにfuncなんとかというのは君の好きなグーグルあたりでも例ではよく使うわな。 BとSもbigとsmallだろうと英語得意なら当たりがつくけどね。なぜABじゃなくてBS なのか。そもそもoutに出てんだし。
868 名前:デフォルトの名無しさん [2020/07/05(日) 07:38:39.33 ID:9F15TCk0.net] >>837 行があればChinkoクラスを作るとこだがスペースいらないで intじゃなくてヌルポが出るものがarrayだからそれの長さで表してるだけだよ。
869 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 07:44:01.87 ID:M+BkbwUs.net] > intじゃなくてヌルポが出るものがarrayだから ・・・ Java知らんのか?整数かつオブジェクトでも使えばいいじゃないか 具体的には教えてやらんよ。自分で勉強しな
870 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 07:46:53.71 ID:wXNAUX4A.net] privateメソッドだからテストしないとか言ってるやつはキチガイ 早く死んでね
871 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 07:49:38.56 ID:y7MN16M9.net] >>824 いや、やってもいいだろ お前がやりたくないのは「たまたま」VisualStudioでやりにくいってだけの理由だろ 早く死んでね
872 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 07:53:17 ID:M+BkbwUs.net] こういう事やって、NULLチェックが4倍に増
873 名前:えたー、テストも増えたーって 言ってるやつがいるなんて驚き。馬鹿かとw 以下擬似コードな public func(value) { // valueのNULLチェック 処理 処理 処理 } ↓ public func(value) { // valueのNULLチェック foo(value); bar(value); baz(value); } private foo(value) { // valueのNULLチェック 処理1 } private bar(value) { // valueのNULLチェック 処理2 } private baz(value) { // valueのNULLチェック 処理3 } [] [ここ壊れてます]
874 名前:デフォルトの名無しさん [2020/07/05(日) 07:56:16 ID:LRfXHt7v.net] プロは俺だけだったか。
875 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 08:03:19.96 ID:FjEgCO9/.net] そもそもprivateメソッドだからテストしないとか言ってるキチガイにまともな返答なんかいらない そんなのどこの職場でも認められるわけないから publicメソッド通したprivateメソッドに自分が想定したケースの値が全部入る保証なんかない ある特定のケースのみそのメソッドの処理が欲しいときにしか呼んでないことあるだろ つまりメソッド自体のテストはできてないしその方法でコードカバレッジ100%は無理だし そもそもpublicから呼び出したprivateのコードカバレッジを100%にするなんて 作業が狂気過ぎてまともな脳みそ持ってるやつならやる前に無駄って理解できる バカは早く死んでね
876 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 08:06:02.24 ID:M+BkbwUs.net] そもそもprivateメソッドだからテストしないとか言ってるキチガイには この言葉を授けよう t-wadaのブログ https://t-wada.hatenablog.jp/entry/should-we-test-private-methods#%E3%83%91%E3%83%96%E3%83%AA%E3%83%83%E3%82%AF%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E7%B5%8C%E7%94%B1%E3%81%A7%E3%83%86%E3%82%B9%E3%83%88%E3%81%99%E3%82%8B 私の回答 短くまとめると、プライベートなメソッドのテストを書く必要は 無い と考えています。 ほとんどのプライベートメソッドはパブリックメソッド経由でテストできるからです。プライベートメソッドは実装の詳細であり、自動テストのターゲットとなる「外部から見た振る舞い」ではありません。 ただし、この議論にはプロダクトコードもテストコードも自分で書いていることという前提があります。プロダクトコードに手を入れられず、テストコードも無いレガシーコードに対しては、リフレクションは強力な手段です。 プライベートなメソッドのテストに関しては、4つの考え方があります。 パブリックメソッド経由でテストする 別クラスのパブリックメソッドとする テスト対象の可視性を(やや)上げる プライベートのまま、リフレクションでアクセスしてテストを書く パブリックメソッド経由でテストする 多くの場合、そのクラスのパブリックメソッド経由でプライベートメソッドのテストも同時に行えます。テストできているか不安があるならテストカバレッジを確認しましょう。
877 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 08:10:31.93 ID:FjEgCO9/.net] >>846 そいつプロジェクトで仕事したことあるのか怪しい部類じゃね?
878 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 08:16:36 ID:IUsMolpf.net] publicを通した範囲でしかできないprivateのテストは網羅されてなく メソッドの単体テストとして十分なテストは行われていません あなたの意見は採用できません できれば実際のプロジェクトを5つぐらい経験されてはいかがでしょうか?
879 名前:デフォルトの名無しさん [2020/07/05(日) 08:25:21.85 ID:9F15TCk0.net] public通したprivateは単体としては怪しいというのはその通りだけど、 そもそも呼ばれないprivateを書くバカはいないわけで、条件があるから 書いてんだよね。で、条件をpublicの段階でテストするわけだから ほぼ通ってるわけだよ。 上のチンコテストだとnullから16まで流せば全部通る。 違いは、上の例でprivateにnull突っ込んだらヌルポだわな。そこをテストするのは コード変えなきゃいけないし、OOの大規模ビジネスソフトではそういうことは やらない。それをやらなきゃいけない環境なら関数型でもいけるはず。
880 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 08:31:48.84 ID:ckfZDtdO.net] >>849 できない時点でこの話は終わりさ やらないわけには行かないんだから 90%できてても残り10%をどうやってもやる方法がないんだから その方法はどうやっても採用できないし わざわざする理由もない 別の方法ではできるんだから
881 名前:デフォルトの名無しさん [2020/07/05(日) 08:33:02.53 ID:9F15TCk0.net] >>840 君のがpublic privateに関しては言ってることは正しいんだが 底抜けのバカだなあ。 整数かつオブジェクトwこのレベルの人と話してたのかw はあ。。。 なんかいやになっちゃった。
882 名前:デフォルトの名無しさん [2020/07/05(日) 08:35:22 ID:9F15TCk0.net] >>850 いやだから16まで流せば全部できてるけど。 ビジネス系ではやらないよ。組み込みで全部 テストしなきゃいけないというならわかるので すれば良い。ただOOの手法とは違う。 デベロッパー千人のところでやってるの? やってないでしょ?
883 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 09:13:35 ID:iCbhqS6F.net] 通ってればいいっていうなら単体テスト全否
884 名前:閧セろw 結合テストなりで全部やりゃいいって話になる。 [] [ここ壊れてます]
885 名前:デフォルトの名無しさん [2020/07/05(日) 09:23:53.74 ID:9F15TCk0.net] >>853 だからその線引きをどこでやるのかっていう事で、 privateまで全部テストケース書いてエッジケースもネガティブも 全部やるなら関数型で良いんだよ。 別にバカにする気は無いし、関数型のが難しい場面もたくさんあるが、 大規模(デベロッパーだけで数百人)のOOプロジェクトやった事ある?
886 名前:デフォルトの名無しさん [2020/07/05(日) 09:30:39.94 ID:9F15TCk0.net] 上のチンコの例で言えば、funcSとfuncBのテストをテストケース書いて コードを書き換えた上でやってドキュメントなりログなりで残すの? だったらpublicでやれば良いし、そうやってpublicにするなら関数型でも おんなじ事でしょ。 チンコがnullなのか16以上そこそこでかいのかまでしか関係ないわけで privateがnullをハンドリングしてないとか無駄なんだよ。もちろん 命に関わるようなところではそれくらいの厳格さが求められる場合も あるだろうが、普通のビジネスソフトではそこまでやらない。 他のチームが関わる場所を少なくするためにカプセル化するわけで、 そんな全部publicにしたら意味ないんだよ。
887 名前:デフォルトの名無しさん [2020/07/05(日) 09:41:54.39 ID:LRfXHt7v.net] 弊社はC2カバレッジ100%未満は出荷できませんけどね。
888 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 09:42:35.87 ID:j0cUMVMZ.net] >>854 線引じゃねーよクソ野郎 publicでたまたま呼ばれた1パターンと privateの網羅テストが同じになってたまるかアホかよ クラスのなかにあるのでpublicから呼ばれたときだけ動けば ルーチンとして不出来でもOKなんてあるわけないだろ お前はクソだからもう死ねよ
889 名前:デフォルトの名無しさん [2020/07/05(日) 09:45:43.25 ID:9F15TCk0.net] >>857 まあじゃあ君はprivateまでテストケース書いてやっとけば良いんじゃない? 誰も止めてないし。大規模ビジネスソフトでは世界的に言って普通ではないというだけで。 僕はあんまり関わることのないレベルの世界だけど、まあ多分一生関わらないので 君が良いならそれで良いと思うよ。
890 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 09:51:39.34 ID:BTTSshKd.net] >>857 君は大変なんだねwテストがんばれーwww
891 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 09:54:43 ID:bzHIXl0a.net] >>858 落としどころとしてはそんなところで良いんじゃね? 問題なのは「privateはテストするべきではない」なんて変な教義を押しつける人の方なんで。
892 名前:デフォルトの名無しさん [2020/07/05(日) 10:02:55.49 ID:9F15TCk0.net] >>856 正直QAやってたのは随分前の話だから最近のQAツールは知らんけど、 privateが全部通ってれば100%なわけで、そもそもprivateがある理由は 使われるためなんだから普通は誰も一回も使ってない場合なんかはないわな。 レベルが高くなると通らないケースも出るだろうが。だから線引きってこと。 チンコテストならnullから16までやれば100%通ってる。privateかpublicかって のは関係ない。ただしprivateはnullをハンドリングしてない。それをどうするかって話。
893 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 10:03:22.77 ID:iCbhqS6F.net] >>854 お前こそ大規模プロジェクトやったことないだろw それだけ大規模だと逆にテストコード書かんわ(nttデータとかアクセンチュアとかな) そんなクソプロジェクトを引き合いに出されても知らんわw
894 名前:デフォルトの名無しさん [2020/07/05(日) 10:05:36.79 ID:9F15TCk0.net] >>860 「べきでは無い」とは思わないけど、privateをデベロッパーの個人的な チェックを超えてテストすることを求められるとしたら、何かプロジェクト的に おかしいとは思う。
895 名前:デフォルトの名無しさん [2020/07/05(日) 10:08:05.85 ID:9F15TCk0.net] >>862 だから僕もNTTデータとかは知らんと上に書いてるけれども。 アメリカの大規模ソフトは中の人だし、他の会社のデベロッパも何人も知ってるので、 実際にアメリカの業界は知ってる。 君の「クソブロジェクト」ではないプロジェクトは会社名は出す必要はないが 例えばアメリカのERPとかそのレベルでなんなの?
896 名前:デフォルトの名無しさん [2020/07/05(日) 10:09:56.64 ID:9F15TCk0.net] だいたい質問を質問で返す人は答えるのに不都合がある人。 数百人のデベロッパーのプロジェクトをやったことなくても全く問題は ないんだが(ロッキードのミサイルの制御の人とか数百人もいないし
897 名前:)、 「あるよ」とは帰ってこない。 [] [ここ壊れてます]
898 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 10:15:56.23 ID:bzHIXl0a.net] >>863 だからそれは別の話なんだからさ。 「privateなら必ずしも単体テストする必要はないけどやりたいならやれば?」 これでいいじゃん。
899 名前:デフォルトの名無しさん [2020/07/05(日) 10:19:00.51 ID:9F15TCk0.net] >>866 ちょっと弱いかな。「普通はやらんけどやりたかったりやる必要があるならやれば?」 くらい?privateを全部テストケース書いてエッジやネガティブやるとなると多くの場合 サグラダファミリアになるし、普通はやらない。 でもやりたいならやれば良いとは思うのでだいたいそういう感じか。
900 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 10:31:49.01 ID:BTTSshKd.net] 組み込みおじさんはそこに義務感を感じ、他者に強要するのだろう 難儀なこった
901 名前:デフォルトの名無しさん [2020/07/05(日) 10:37:41 ID:9F15TCk0.net] 組み込みとかだと多くの場合そもそもOOあんまりいらんと思うのよね。 人工呼吸器の制御とかだときびしくやらないといけないのはわかるし、 やってない人工呼吸器とか俺も付けられたくないけどさw OOのメソッドとかはちょっと違う話だわな。カプセル化とかは数百人になると 生きてくる。個人的には自分一人の個人プロジェクトでも使うけど。 数年後にまたやる羽目になったりした時に楽なので。
902 名前:デフォルトの名無しさん [2020/07/05(日) 10:45:19 ID:MQ9nuMmc.net] >>847 それは僕も思ってた 机上の空論っぽいんだよね
903 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 10:53:33 ID:kFjTOHVy.net] >>867 どこに差があるのかよくわからんが、どちらにしても一行目は問題ないにしても 二行目はここに存在しない敵を攻撃している印象。 いちいち関係ない話を絡めなくてもいいじゃんと思うが、二度も書くということは そっちが主張したい本音ということかな?
904 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 10:55:30 ID:sn+7aSX4.net] OOPは理解している人とOOPを理解していない人が単体テストについて不毛な争いをするスレかな?
905 名前:デフォルトの名無しさん [2020/07/05(日) 10:58:45.46 ID:9F15TCk0.net] >>871 いや、元々がpublicじゃなくてprivate単位でやれという話からなんだからその話だよ。 publicでprivateの分岐通ってるなら良いじゃんといなら誰も否定していないのでは? 逆にprivateで一度も通ってない部分があっても良いじゃんとも言っていないような。 if文書くのに絶対通らない物を書く人いるわけないでしょw ただ、公式なテストとして、privateのレベルでテストケース書いてログ残してコード 書き換えてコンパイルし直してやるというのは少なくとも普通のビジネスのソフトとしては 一般的なベストプラクティスではないし普通はアメリカの大手一流ではやらないということ。 例外はあるとしても。
906 名前:デフォルトの名無しさん [2020/07/05(日) 11:03:24.23 ID:LRfXHt7v.net] 土台が腐ってたら。 全部検査するほうが楽。
907 名前:デフォルトの名無しさん [2020/07/05(日) 11:04:34.60 ID:9F15TCk0.net] 幸いそういうのには当たったことはないw 上に書いたように例外は認める。
908 名前:デフォルトの名無しさん [2020/07/05(日) 11:09:23.64 ID:MQ9nuMmc.net] アメリカの大手一流ってどこだろ?
909 名前:デフォルトの名無しさん [2020/07/05(日) 11:11:04.89 ID:MQ9nuMmc.net] アメリカや大手や一流が正しいとは限らないけどね ボーイングの飛行機があんなことになってるように
910 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:11:13.65 ID:9F15TCk0.net] まあ会社的にはプログラマなら全員知ってるとこ。それ以上は言わん。
911 名前:デフォルトの名無しさん [2020/07/05(日) 11:13:19.35 ID:9F15TCk0.net] >>877 だからボーイングの制御系とかはそもそも全然別の話。 もちろん正しいとは限らないけど標準なのは確かだわな。 日本初のOOより優れたこういうメソッドがある!というなら もちろん喜んで聞くけどね。
912 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:14:37.74 ID:kFjTOHVy.net] >いや、元々がpublicじゃなくてprivate単位でやれという話からなんだからその話だよ。 >ublicでprivateの分岐通ってるなら良いじゃんといなら誰も否定していないのでは? そう、それが一致しているならいちいち関係ない話を絡めなくてもいいんでは? public経由のテストで十分網羅できるのにそれでもprivateメソッド単位のテストが 必要なんて主張している人いたかな?そこに誤解があるんじゃないの?
913 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:15:16.65 ID:9F15TCk0.net] >>880 いるから揉めてるんすよ。
914 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:16:31.89 ID:M+BkbwUs.net] >>881 それはどれ?レスを教えて
915 名前:デフォルトの名無しさん [2020/07/05(日) 11:17:47.72 ID:MQ9nuMmc.net] アメリカの大手の一流がそうしてるから正しいのだという権威にすがった論理を 展開されておられたのでその会社ってど
916 名前:ソらの会社なのって聞いてみたんだけど そんな会社本当にあるの? [] [ここ壊れてます]
917 名前:デフォルトの名無しさん [2020/07/05(日) 11:18:34.49 ID:MQ9nuMmc.net] t_wadaの次はアメリカの大手一流か、議論の根拠が権威ばっかりやな
918 名前:デフォルトの名無しさん [2020/07/05(日) 11:21:40.50 ID:9F15TCk0.net] 例えばこの方。 848デフォルトの名無しさん2020/07/05(日) 08:16:36.05ID:IUsMolpf publicを通した範囲でしかできないprivateのテストは網羅されてなく メソッドの単体テストとして十分なテストは行われていません あなたの意見は採用できません できれば実際のプロジェクトを5つぐらい経験されてはいかがでしょうか? メソッド全部ちゃんとエッジケースやネガティブまでやれって業界があるのは わかるし、必要だとも思うけど、それはOOのビジネス系だでは普通やらないということを 言ってただけなんだけど、バカだアホだお前は素人だといろんな方面から変に噛みつく やつばかりでもう僕はいやになっちゃった。この人が噛み付いてきたということではないよ。 もちろんまともな人のが多いんだろうけどおかしな人のが目立つからね。
919 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:22:22.08 ID:/MeFbFCW.net] いちいち論点ずらすな。 お前ら、何で争ってるんだよ。
920 名前:デフォルトの名無しさん [2020/07/05(日) 11:23:41.69 ID:MQ9nuMmc.net] OOのビジネス系ってどんな仕事? そんないい加減なことやっていい仕事ある? トラブってもうちうちでなーなーで済むようなBtoBの仕事? 自社内でしか使わないシステムとか?
921 名前:デフォルトの名無しさん [2020/07/05(日) 11:24:18.36 ID:9F15TCk0.net] アメリカの大手一流が不満なら自分の業界の実例をあげたらいかがだろうか? privateをテストケース書いて全件やってるとこなんておそらくないぞ。あるというならあげれば良いだけの話。 テストツールどうやって動いてるねん。コード自動で書き換えてコンパイルし直しか。話がおかしいのすぐわかるだろ。
922 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:24:52.69 ID:/MeFbFCW.net] まず、このスレの連中は議論する前に論理学を学ぶことをお勧めするよ。 あと、詭弁について調べろ。
923 名前:デフォルトの名無しさん [2020/07/05(日) 11:25:24.17 ID:MQ9nuMmc.net] >>888 アメリカの大手一流ってどこの会社なん?
924 名前:デフォルトの名無しさん [2020/07/05(日) 11:25:52.62 ID:9F15TCk0.net] >>887 だからアメリカ製のパッケージとかコンサルとの間でよく揉めてるだろ。これは「バグ」じゃないとか。DBだってよくある話だわな。 君はどんな仕事なの?
925 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:26:35.07 ID:9F15TCk0.net] >>890 君の会社はどこなん?
926 名前:デフォルトの名無しさん [2020/07/05(日) 11:27:26.12 ID:MQ9nuMmc.net] >>891 アメリカ製のパッケージとかコンサルとの間でよく揉めてる仕事なん? なにそれ? 何言うてんの? 何の仕事してるんよ
927 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:27:47.35 ID:kFjTOHVy.net] >>885 それは網羅してないからダメという意見では? そこに反論するならば「privateのテストを強制すべきではない」ではなく 「public経由でも網羅することは可能」ではないかね?(できるなら)
928 名前:デフォルトの名無しさん [2020/07/05(日) 11:27:51.75 ID:9F15TCk0.net] >>882 >>848 デフォルトの名無しさん2020/07/05(日) 08:16:36.05ID:IUsMolpf publicを通した範囲でしかできないprivateのテストは網羅されてなく メソッドの単体テストとして十分なテストは行われていません あなたの意見は採用できません できれば実際のプロジェクトを5つぐらい経験されてはいかがでしょうか?
929 名前:デフォルトの名無しさん [2020/07/05(日) 11:28:29.72 ID:MQ9nuMmc.net] >>892 アメリカの大手一流でこうしてるから、こうするのが正解なんやー 言うてたからアメリカの超一流ってどこなんよ? と聞いたんやけど なんで言えへんの
930 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:28:59.86 ID:YdQ981ul.net] >>870 新しい理論や手法を提唱する人には良くあることだと思うけど、その理論はある前提、ある側面では正しいけど、常に無条件に適用することは正しくないと本人は分かっていて、敢えてそういうことはわざわざ詳しくは説明しない。自分の論が有用な物だと主張したいがため、嘘はつかない範囲で相手が勝手に誤解してすごいと思わせるような物言いをする。 で、その理論に感銘を受けた人の一部が、理論の表面的な効能だけをありがたく受け取って問題点や前提条件などは正しく理解しないまま、受け売りの知識を他所で披露する。 そこで議論になると、本質をちゃんと理解してないまま自説を擁護しようとするから、無理が生じたり話が噛み合わなかったりする。 という流れでイマココなのかなと思う。
931 名前:デフォルトの名無しさん [2020/07/05(日) 11:29:53.38 ID:MQ9nuMmc.net] >>897 なるほどね、わかる気がする
932 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:29:56.16 ID:M+BkbwUs.net] 大手一流の名前を言うだけで逃げそう(笑)
933 名前:デフォルトの名無しさん [2020/07/05(日) 11:33:32.02 ID:MQ9nuMmc.net] 足ガクガクになってまうよー
934 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:36:47.20 ID:Ua1+WoRk.net] まぁ、単体テストでprivateを直接呼び出すのは変な話だけどな。 デバッグならともかく、単体テストでリフレクションによるprivate強制実行とか反則でしょ。 デバッグで許される理由は、バグを見つける可能性があるから。 単体テストで駄目な理由は、テストの合否判定が不当に変わる恐れがあるから。 というのが自分の見解だが、皆さんはどう? スレが加速してからの途中参加だから、自分の発言に自信ないけど。
935 名前:デフォルトの名無しさん [2020/07/05(日) 11:37:26.26 ID:9F15TCk0.net] >>894 そもそもpublicを経由するのが網羅してないから、経由せずにprivate単位で コード書き換えてテストやるべきという主張自体がOO的にはおかしいわけです。 見せたくないからprivateなわけで。 もちろんデベロッパー個人でコード入れて確認することはあるだろうけれども、 開発手順としてテストケース書いてログ残してというのは違う。 public経由で内部を網羅してるかしてないかは知ったことではない、というのが正解。 上の例で言えばfuncBやfuncSがnullをチェックしてようがしていまいが他のチームには 関係ないわけです。入り口でnullチェックしてれば。 個人的にはサイズがでかければprivateでも入れるけども、それをテストケース書いて ログ残してと要求されたことはないし、普通はされんはず。少なくともアメリカでは。
936 名前:デフォルトの名無しさん [2020/07/05(日) 11:38:33.09 ID:MQ9nuMmc.net] GoogleであってもMicrosoftやOracleもバグのないソフトは作れないし 銀の弾丸的な手法があるわけもなく、アメリカ、大手、一流という箔付けに頼ってるだけでしかない
937 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:41:45.16 ID:Xwol7cCi.net] せっかく匿名で議論できるのに 「アメリカの大手一流」とか言い出しちゃうところが哀れやわ >>805 の下痢便コード出た時点でスレ終了やろ普通
938 名前:デフォルトの名無しさん [2020/07/05(日) 11:43:37.87 ID:9F15TCk0.net] >>896 君の会社はどこなの? アメリカ大手1流でブライベート単位でのテストケース書いたりした網羅的なテストは「していない」という証明は悪魔の証明だから無理だけど。全社で働いたわけじゃないし。 逆にアメリカ大手1流でやっているという証明は一件出すだけなのでGAFAのどこでも、マイクロソフトでもアドビでも簡単にできるのでぜひどうぞ。 ただ、なんかコピペで爆撃されたオートメーションツールでは、特にコンパイル必要な言語は、直接privateテスト出来ないよ。当たり前の話。
939 名前:デフォルトの名無しさん [2020/07/05(日) 11:45:23 ID:MQ9nuMmc.net] >>905 アメリカの大手一流ってどこなんよ?
940 名前:デフォルトの名無しさん [2020/07/05(日) 11:45:48 ID:MQ9nuMmc.net] その会社がやってるからすごいんでしょ、はよ教えてやー
941 名前:デフォルトの名無しさん [2020/07/05(日) 11:47:16 ID:MQ9nuMmc.net] もう何でもええから言うて、そしたら僕がすごーいって言うから、もうそれでええやんか
942 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:49:23 ID:9F15TCk0.net] また別IDが下痢便とか発狂し始めた。 お前はほんとにウンコとかそのレベルのことが好きだな。
943 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:51:02 ID:9F15TCk0.net] >>907 やって「ない」という話だけど。 まず日本語学んでやー よろしくなー
944 名前:デフォルトの名無しさん [2020/07/05(日) 11:51:58 ID:MQ9nuMmc.net] >>910 アメリカの大手一流ってどこなんよ?
945 名前:デフォルトの名無しさん [2020/07/05(日) 11:52:54.88 ID:MQ9nuMmc.net] たぶんアップルは単体テストやってない、SSLでアホなバグだしてたから、あの会社適当だわ、しらんけど
946 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:53:26.19 ID:9F15TCk0.net] >>911 君が自分の名刺でもあげたら考えとくわー
947 名前:デフォルトの名無しさん [2020/07/05(日) 11:55:12.71 ID:MQ9nuMmc.net] >>913 アメリカの大手一流ではそれが普通なんやーおりゃーってイキっておられましたよね だから聞いたのに、教えてくれないなんて酷いです、あんなにイキってたのに酷いです
948 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:55:58 ID:M+BkbwUs.net] >>902 > そもそもpublicを経由するのが網羅してないから、経由せずにprivate単位で > コード書き換えてテストやるべきという主張自体がOO的にはおかしいわけです。 誰がそんなこと言ってるの? 少なく遠も俺は 1. privateはpublic経由でテストすれば十分 2. もしpublic経由でテストできないほど複雑なら、そもそも設計がおかしい 3. 設計の問題を修正して、責務を分割すれば、自然にpublicになるはず と言ってる。 テストするためにpublicにするのではなく 問題がある設計を直せばpublicになる。と言っている。
949 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:55:59 ID:9F15TCk0.net] >>914 劣等感がひどいな君は。まずはカウンセラーに かかりなさい。OOの話はそれからしようか。
950 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 11:58:34 ID:9F15TCk0.net] >>915 いや だ か ら この人。 848デフォルトの名無しさん2020/07/05(日) 08:16:36.05ID:IUsMolpf publicを通した範囲でしかできないprivateのテストは網羅されてなく メソッドの単体テストとして十分なテストは行われていません あなたの意見は採用できません できれば実際のプロジェクトを5つぐらい経験されてはいかがでしょうか?
951 名前:デフォルトの名無しさん [2020/07/05(日) 11:59:21 ID:MQ9nuMmc.net] アップルのSSLのバグはこれね Apple史上最悪のセキュリティバグか、iOSとOS XのSSL接続に危険すぎる脆弱性が発覚──原因はタイプミス? https://appllio.com/20140223-4899-apple-ios-bug-ssl-goto-fail
952 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 12:06:18.88 ID:wqV8YbJ4.net] IUsMolpfに文句言えばいいのに。
953 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 12:07:47.85 ID:kFjTOHVy.net] >>902 ああつまり、重要度は関数仕様>ブラックボックステスト>ホワイトボックステストだから テストのために仕様変更はすべきでないという主張か。 それはわからんでもない気はするけど、そういうウォーターフォールが絶対というわけでもないしな。 その是非はさておき、そこが論点なら例えばリフレクションのような形でテストできたり、あるいは テスト仕様を書く本人が関数仕様も決定することができる条件なら全然問題ないわけだ。
954 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 12:07:48.24 ID:9F15TCk0.net] >>918 正直iOSは全然知らんけどこれは酷いなw Public Private以前にStaticだからなんにしても直接テストする部分だな。
955 名前:デフォルトの名無しさん [2020/07/05(日) 12:08:47.51 ID:MQ9nuMmc.net] >>921 せやろw
956 名前:デフォルトの名無しさん [2020/07/05(日) 12:13:26.38 ID:9F15TCk0.net] >>919 横から狂犬が噛み付いてくるんだよ。 >>920 ウォーターフォールは関係ないし、重要度をつけてるわけでもないけれども、 普通はprivateはソースコード変えてまでテストするものではないというだけの単純な話。 そもそも「テスト」と言ってもいろんな段階があるわけだし、「ユニットテスト」にしても プロジェクトによって意味が違うわけで。 なんにしてもprivateを(例外はあるにせよ)全部公式な形でテストしろというのは OOの手法のプロジェクトでは「普通は」やらんというだけなのになんでこんな揉めるのか。
957 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 12:16:58.82 ID:kFjTOHVy.net] >なんにしてもprivateを(例外はあるにせよ)全部公式な形でテストしろというのは >OOの手法のプロジェクトでは「普通は」やらんというだけなのになんでこんな揉めるのか。 全部やれなんて主張している人がいないから。
958 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 12:19:09.22 ID:9F15TCk0.net] >>924 だからいるだろうが。本人なの? 848デフォルトの名無しさん2020/07/05(日) 08:16:36.05ID:IUsMolpf publicを通した範囲でしかできないprivateのテストは網羅されてなく メソッドの単体テストとして十分なテストは行われていません あなたの意見は採用できません できれば実際のプロジェクトを5つぐらい経験されてはいかがでしょうか?
959 名前:デフォルトの名無しさん [2020/07/05(日) 12:20:23.64 ID:MQ9nuMmc.net] >>805 こう書いた方が良いと思うの https://paiza.io/projects/mPhqBnYZnQukkW6HY9LmOQ
960 名前:デフォルトの名無しさん [2020/07/05(日) 12:21:30.51 ID:MQ9nuMmc.net] privateメソッドが正しいことは確認する、その上でpublicのメソッドが正しいかテストするって感じ
961 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 12:30:30.98 ID:kFjTOHVy.net] >>925 これが「privateのテストを全部やれ」に読めてしまうのか。そこが原因だな。
962 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 12:32:35.17 ID:M+BkbwUs.net] >>923 > ウォーターフォールは関係ないし、重要度をつけてるわけでもないけれども、 > 普通はprivateはソースコード変えてまでテストするものではないというだけの単純な話。 テスト中に設計の問題が発覚しても ソースコード書き換えないの? ソースコード変えてまでテストするものではないというけど なんでソースコードを作成&自分が書いたそのコードをテストしてるときに 自分が作成してるソースコードを変えたらだめなの?
963 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 12:36:24.73 ID:M+BkbwUs.net] 普通の開発だったら 0. なにかの修正を行う必要が発生する 1. その修正のためにソースコードを修正する 2. 修正したコードが正しいかテストする 3. 1〜2を繰り返し修正したコードに問題がなければ開発完了 4. 統合テストとかより大きなテストを行う でしょ? public・privateメソッドをテストしたいっていうのは この1〜2のフェーズで発生することなのに、 なんでテストがやりにくいなと思ったときに ソースコードを修正したらだめなの?
964 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 12:38:58.81 ID:wqV8YbJ4.net] >>926 スマホでも見やすくなったな。 あー、なるほど。 でも、サンプルみたら少し混乱してきた。 自分はクラスの単体テストをイメージしてたけど、まさか、Mainクラスの中に定義されたprivateメソッドの単体テスト(?)の話をしていたとか? もう単体テストの意味が少し崩壊してきたが...
965 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 12:46:16.73 ID:BTTSshKd.net] どういう流れなのか追うのもめんどいなw
966 名前:デフォルトの名無しさん [2020/07/05(日) 12:52:51.86 ID:9F15TCk0.net] >>928 そもそも300くらいからそういう話だから。 privateはpublicからアクセスして全部網羅できるから問題ないなんて 誰も否定してないしそういうことならもともと荒れてない。 >>929 あのさ、例えばバグが発生したらコード書き換えるのは当たり前だよね? そんな話では当然ないよね? privateを直接テストするためには外部から呼べないのだから、呼ぶためには クラス内に書くしかないわけだよ。で、ソースに書き込んでクラス内に書いて テストしたあとまたそのコードを取り除いてとかするの?それをドキュメント化 する? 普通はコード書いてる最中にテストコードを入れて確認するのは公式なテストの メソッドでは無いし、それをドキュメント化したりするのは求められないと 思うが。 >>926 ワロタw けどそうじゃ無い。privateで直接アクセスした時のみnullがでるということ。 intじゃ無いのは例のためにわざとそうなっている。あとchinTestが呼ばれてないし、 OptionalにisEmpty無いのでは。
967 名前:デフォルトの名無しさん [2020/07/05(日) 12:54:31.17 ID:9F15TCk0.net] nullがでる->ヌルポがでる
968 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 12:54:57.72 ID:M+BkbwUs.net] >>933 > privateを直接テストするためには外部から呼べないのだから、呼ぶためには > クラス内に書くしかないわけだよ。で、ソースに書き込んでクラス内に書いて > テストしたあとまたそのコードを取り除いてとかするの?それをドキュメント化 > する? 誰がそんな事するって言ってんの? お前が想像が間違ってる
969 名前:デフォルトの名無しさん [2020/07/05(日) 12:56:01.25 ID:MQ9nuMmc.net] >>933 えっとごめんそのnullの問題は設計が下手なだけだと思ってて、設計を見直すべきかと privateのテストをどうしますかの例として出したので問題ないっしょ 君はこのプログラムをどうやってテストするん?
970 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 12:56:34.25 ID:3WDjCjSx.net] よくもまあ粉薬をオブラートで包むような話でこれだけのレスで盛り上がれるなー
971 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 12:57:28.17 ID:M+BkbwUs.net] いやーびっくりだw 設計がおかしいから設計を修正するって話をしてるのに 設計を修正した後に修正前に戻すなんでやらないだろ!って言われちゃった(笑) だーれも修正前に戻すなんて言ってないの おかしい設計を修正して「開発完了」なの
972 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 12:57:46.31 ID:JiRnWiGC.net] たぶん、スレタイがスレタイだから、手続き型でプログラムを書く人のイメージする単体テストとオブジェクト指向プログラマーのイメージする単体テストで齟齬が生じているのでは? そりゃ、サンプルみたいに関数が定義されていたらprivateだろうと関数はテストするべきって発想になるのは不思議じゃないし、オブジェクト指向に基づき設計されたクラスを単体テストする話であれば、privateをテストって、どういう意味なんだろって不思議がるだろうよ。 そして、たぶん、サンプルコードに対して真っ先に突っ込むべき点はOOPでも何でもないコードという点だと思うのだが、そこはいいのかな?
973 名前:デフォルトの名無しさん [2020/07/05(日) 12:57:47.49 ID:MQ9nuMmc.net] OptionalにisEmptyが無いというのは何言ってるのかわからない 本当になかったらコンパイルに失敗するよ
974 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 13:00:08.78 ID:M+BkbwUs.net] >>939 一人privateがテストしづらいからpublicに変更してテストして "元に戻す" 話をしてるやつがいるみたいだが(笑)
975 名前:デフォルトの名無しさん [2020/07/05(日) 13:00:23.50 ID:MQ9nuMmc.net] >>939 僕はOOPのコードだと思ってるよクラスが定義されてるからね 君が思うOOPのコードはこれだっていうのを君に出していただきたいかな
976 名前:デフォルトの名無しさん [2020/07/05(日) 13:00:34.24 ID:9F15TCk0.net] >>935 もうお前は良いからスレを読め。 >>936 いやそうじゃなくて、publicで呼ばれるprivateを直接テストするのかという 話なので、そのためにわざわざヌルポになるように書いてるわけで、staticなら そのままメソッド呼べば良い話。 もうこの板嫌。。。
977 名前:デフォルトの名無しさん [2020/07/05(日) 13:03:47.50 ID:MQ9nuMmc.net] >>943 ヌルポになるような設計はおかしいのがそれはコーディング力の稚拙さゆえ。 だから、いまはそのヌルポの問題は置いておこう。 さて、君はこのプログラムをどうテストするのか教えて欲しいっていうのが僕の要望だよ。
978 名前:デフォルトの名無しさん [2020/07/05(日) 13:06:51.97 ID:9F15TCk0.net] >>944 いやだから そ う じ ゃ な く て privateでだけヌルポが出るように書いてるの。privateとpublicのテストの話だから。 出さないだけならnullチェック入れれば良いだけの話だが、そういうことじゃ無くて わざと出るようになってるの。 そのプログラムならstaticなのだからそのまま呼べば良いし、 chinTestも呼ばれてないけどpublicなのだからテストしたければそのまま 呼べば良い話。
979 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 13:10:29.02 ID:JiRnWiGC.net] >>942 スマホだからインデントとか崩れは許してほしいが class USBMemory : Storage{ private: 色々定義 public: USBMemory(ポート設定) void open(string file) string read() void write(テキスト) void close() } 文法適当だが勘弁して 組み込みおじさんにも分かりやすいように、 組み込みを例にするが、 OOPってこんな感じのコードでしょ。 で、ユーザーは USBMemory usb; usb.open(ファイル指定) text = usb.read() usb.close() こんな風に内部実装を知らなくても呼べる。
980 名前:デフォルトの名無しさん [2020/07/05(日) 13:11:36.99 ID:MQ9nuMmc.net] >>945 わざと出るように入れたのが現実の実装と乖離してるので、わざと入れる意味が無いので 気にする必要ないですよってこと 君はpublic経由でprivateをテストするんだって立場ですよね 君はどうテストを書きますかってことを教えて欲しいです 君の元のコードでもいいですよ、僕が変更したコードでも良いですよ 君はどうprivateをテストしますか?
981 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 13:12:18.35 ID:JiRnWiGC.net] 残念ながら、クラスを使えばOOPという認識は間違い。
982 名前:デフォルトの名無しさん [2020/07/05(日) 13:13:15.86 ID:MQ9nuMmc.net] >>948 僕は君の認識が間違いだと思ってる、君の方が残念
983 名前:デフォルトの名無しさん [2020/07/05(日) 13:13:55.43 ID:MQ9nuMmc.net] クラスの存在こそがOOPの本質
984 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 13:13:59.63 ID:JiRnWiGC.net] え、そこに反論されるの? 何このスレ。
985 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 13:14:57.78 ID:JiRnWiGC.net] JavaScriptとかpythonとか、元々、クラスはサポートしていないのに? プロトタイプベースはオブジェクト指向じゃないとでも?
986 名前:デフォルトの名無しさん [2020/07/05(日) 13:17:49.53 ID:MQ9nuMmc.net] >>951 えじゃねえよ、なめんなよ
987 名前:デフォルトの名無しさん [2020/07/05(日) 13:18:05.20 ID:9F15TCk0.net] >>947 意味がないどころか、そこにしか意味がないんだよ。 それ「だけ」を見せるためのコードなんだから。staticとか なら話の流れとなんにも関係がないのでそれこそ意味がない。 でもあえていうなら、そもそもまず連打が好きじゃ無い。自分ならループにするけど、 それだけでもない。 まず壊すようにテストすんの。null入れたり、変なオブジェクト入れたり。 で、privateをテストするんじゃなくて、要件通り動くかどうか。nullからint maxまで 回して、要件通りの結果が全てでくるか。変なオブジェクト入れたらどうか。 そういう感じ。 でも最初に書いたように、publicとprivateの話なんだから、そこで エラーが出るか出ないかがないとこのスレ的にはなんの意味もない。
988 名前:デフォルトの名無しさん [2020/07/05(日) 13:18:37.20 ID:MQ9nuMmc.net] >>952 JavaScriptにもPythonにもクラスあるよ クラスがオブジェクト指向の本質だと気づいたから追加されたんじゃないでしょうかねー
989 名前:デフォルトの名無しさん [2020/07/05(日) 13:19:41.30 ID:9F15TCk0.net] クラスの存在はOOPの大事な部分だけど、OOPの言語を使ってもほとんどOOPでは 無いというのはよくある話。巨大クラス一個とかだと頭を抱える。
990 名前:デフォルトの名無しさん [2020/07/05(日) 13:22:07.34 ID:MQ9nuMmc.net] >>954 現実にありえない実装見せて、ほらね、と言われても僕は戸惑うばかり そんな現実にありえないことを想定するからまずいんじゃないですかね 現実にそういうコード書いてるんじゃないかと僕はちょっと君のコーディング力を 疑わしく思ってきたのだけれども public経由で、標準出力に出力するようなprivateコードを一生懸命テストしますか? がんばり屋さんだなとは思うけど、効率悪くないですかね
991 名前:デフォルトの名無しさん [2020/07/05(日) 13:22:29.69 ID:MQ9nuMmc.net] >>956 そんな極端な話ちゃうやろボケ
992 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 13:24:13.83 ID:JiRnWiGC.net] そりゃ、クラスはオブジェクト指向を実現する上で便利だからね。大切な存在さ。でも、クラスなんて無くてもオブジェクト指向でコードは書けるし、逆に、クラスが合っても手続き型の記述をしたら、そりゃ、オブジェクト指向じゃねーわ。 つーか、クラスを使ったらオブジェクト指向ってマジで言ってる? それってつまり、このスレで時々名前の出るstaticおじさんの書いたコードもオブジェクト指向だと言い張るつもり?
993 名前:デフォルトの名無しさん [2020/07/05(日) 13:25:43.22 ID:9F15TCk0.net] >>957 えーー、違うそうじゃ無い。多分君よくわかってない。 例なわけで実際にありえないとかありえる訳が無い。そんな話じゃ無いし 根本的な部分がわかってない。 publicでは問題がなく、private単体だと問題がでるコードなわけで。この意味はわかる?
994 名前:デフォルトの名無しさん [2020/07/05(日) 13:29:16.63 ID:MQ9nuMmc.net] >>959 staticおじさんの元の話知ってる? 僕はリアルタイムであれを読んでたからよく知ってるんだけれども staticおじさんは必要なところではオブジェクト作るよ、でもASP.NETのForm Applicationのフレームワークには もともとリッチなオブジェクトが用意されてるから実務ではそれを組み合わせるだけで事足りることが多いよ だからstaticメインで組み上げてオーケーさって話だったよ オブジェクト指向信者がアホな前提置いて話を発散させただけでstaticおじさんが言ってることはわりあいまともだった こういう議論の場で神クラスを引き合いに出して批判するという極端なことやって意味があるのかなと僕は疑問ですね
995 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 13:30:55.04 ID:JiRnWiGC.net] いや、そもそもstaticおじさんのコードはオブジェクト指向でも何でもねーよ! 話反らすな。
996 名前:デフォルトの名無しさん [2020/07/05(日) 13:32:41.77 ID:MQ9nuMmc.net] >>962 staticおじさんの書いたコードもオブジェクト指向だと言い張るつもり? と君が聞いたからstaticおじさんに対する僕の所見を述べたつもり ASP.NETのオブジェクトを使ってるならオブジェクト指向でしょ オブジェクト指向が為せる技だと思うよ
997 名前:デフォルトの名無しさん [2020/07/05(日) 13:33:02.71 ID:MQ9nuMmc.net] オブジェクト指向便利だよね
998 名前:デフォルトの名無しさん [2020/07/05(日) 13:33:43.81 ID:9F15TCk0.net] コードあげてくれるのは偉いと思うので気がひけるのだが、上のコードは privateとpublicの違いを表すための部分がまるですっぽ抜けてるし、そもそも staticだし結構それ自体staticおじさん感がある。すまんw
999 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 13:33:52 ID:JiRnWiGC.net] >>963 ちげーよ。ASPがオブジェクト指向であって、staticおじさんのコードはオブジェクト指向でも何でもねーよ。
1000 名前:デフォルトの名無しさん [2020/07/05(日) 13:37:13 ID:MQ9nuMmc.net] >>966 でもASP.NETのフレームワークがオブジェクト用意してなかったらstaticおじさんはコード書けなかったと思うし staticおじさんのコードはオブジェクト指向を有効的に活用した非常に優れたコードだと思いますよ 必要もないのにオブジェクト作るのはアホですわ
1001 名前:デフォルトの名無しさん [2020/07/05(日) 13:38:05.15 ID:MQ9nuMmc.net] staticおじさんは必要な場面ではオブジェクト作るっていってるからねー 僕はstaticおじさんに詳しいんだ
1002 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 13:38:11.20 ID:9F15TCk0.net] 神のGTO感があるw
1003 名前:デフォルトの名無しさん [2020/07/05(日) 13:40:17.58 ID:MQ9nuMmc.net] 物事の本質を見誤ると道を踏み外すよ 状態に依存してないのにインスタンスメソッドにしたりとか staticメソッドを定義したらstaticおじさんと言ったりとか そういうバカのできあがりですよ
1004 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 13:40:37.05 ID:JiRnWiGC.net] >>967 > >>966 > でもASP.NETのフレームワークがオブジェクト用意してなかったらstaticおじさんはコード書けなかったと思うし そうだね。 > staticおじさんのコードはオブジェクト指向を有効的に活用した非常に優れたコードだと思いますよ お前がそう思うのなら、そう思えば。そはどうでもいい。 で? クラスを定義すればオブジェクト指向だとまだ主張するの? 論点ずらすなや
1005 名前:デフォルトの名無しさん [2020/07/05(日) 13:42:50.97 ID:MQ9nuMmc.net] >>971 何が気に入らなくて僕に絡んでるのかわからないですが クラスがオブジェクト指向の本質であることには変わりないですよ クラスとはデータと処理をセットにして持つことができるものです クラスを定義することこそがオブジェクト指向の本質です
1006 名前:デフォルトの名無しさん mailto:<
[] [ここ壊れてます]
1007 名前:>2020/07/05(日) 13:44:43.62 ID:MQ9nuMmc.net mailto: 責務ごとにオブジェクトをわけましょうなんていうのは オブジェクト指向でプログラミングすることを前提にした設計論でしか無いです クラスの存在こそがオブジェクト指向の本質です [] [ここ壊れてます]
1008 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 13:45:21.93 ID:JiRnWiGC.net] >>972 >>926 をオブジェクト指向と認識している時点でオメーは間違ってるんだよ。
1009 名前:デフォルトの名無しさん [2020/07/05(日) 13:47:18.05 ID:MQ9nuMmc.net] >>974 いいえ、君のほうが間違いです Mainという名前にしてるのはpaizaではMainじゃないと動かないからですよ その辺わかって絡んでますか? あまり僕を怒らせないほうが良いです
1010 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 13:47:27.85 ID:JiRnWiGC.net] >>972 何が気にいらないかって? オブジェクト指向でも何でもねぇコードをオブジェクト指向と認識して今まで長ったらしい口論を続けてきたことだ。 クソみたいな時間だったな、オイ。
1011 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 13:52:06.41 ID:JiRnWiGC.net] >>975 まぁ、いいさ。これ以上は不毛だ。スレも終わるし。 俺は俺の思う正しいオブジェクト指向で今後も楽をさせてもらうよ。 そっちも、そっちの思うオブジェクト指向とやらを使い続けるがいい。 成果が出た方が正義だ。
1012 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 13:55:35.80 ID:h7Qz+vpg.net] オブジェクト指向だから髪型は自由なのさ 彡 ⌒ ミ (´・ω・`) 不毛とかいうな!
1013 名前:デフォルトの名無しさん [2020/07/05(日) 13:56:22.57 ID:MQ9nuMmc.net] ハゲに謝るべき
1014 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 13:56:24.62 ID:VS9zJ3bZ.net] よし 話を一度整理しよう privateメソッドだからテストしないとか言ってるやつはキチガイ 早く死んでね
1015 名前:デフォルトの名無しさん [2020/07/05(日) 14:06:22.83 ID:MQ9nuMmc.net] ナイスな整理と言わざるを得ない 議論もリファクタリング可能であることを如実に示した
1016 名前:デフォルトの名無しさん [2020/07/05(日) 14:09:58.85 ID:MQ9nuMmc.net] >>976 僕のコードはオブジェクト指向ですよ そこんとこよろしくですよ オブジェクトをどう分けるかって話はありますよ しかし、それとは独立してオブジェクトは存在するので オブジェクトを定義できるクラスの存在そのものがオブジェクト指向の本質なわけです だからオブジェクト指向言語にはクラスが存在します 生物学の類、目のようなものです、どう分類するかは副次的な話であって 分類できることこそが最も重要な事柄です
1017 名前:デフォルトの名無しさん [2020/07/05(日) 14:18:27.81 ID:9F15TCk0.net] 正直あの短さでOOかどうかと(スタティックでインスタンス化もないコードだが)言うのは 不毛だけどID:JiRnWiGCの組み込みおじさんのがOO感はあるよ。 で、staticで出されてもprivateのテストがどうかと言う話には全く寄与しないわけだが、 じゃあ逆に、>>805 のチンコテストのfuncSとfuncBはどうやってテストするの? パブリック経由で全パターンと言うことならこれでこの話はおしまい。 パブリック経由でやりましょう。 違うと言うなら具体的にコードでおながいします。 smallestを9じゃなくて8にしろとかいう苦情は受け付けますw
1018 名前:デフォルトの名無しさん [2020/07/05(日) 14:23:34 ID:MQ9nuMmc.net] >>983 僕ならテストしないですね、全部書き直します メソッドを行数で分割するようなことしてるからそういう下痢便コードができあがるんじゃないかと思いますよ
1019 名前:デフォルトの名無しさん [2020/07/05(日) 14:24:31 ID:MQ9nuMmc.net] クラスにしてもメソッドにしても責務でわけないと 行数が50行超えたから分割しなければみたいなアホなことやってるのはアホですわ
1020 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 14:25:15 ID:JiRnWiGC.net] (組み込みおじさんじゃないんだけどな...組み込みもやるけど)
1021 名前:デフォルトの名無しさん [2020/07/05(日) 14:26:22 ID:MQ9nuMmc.net] >>986 器用ですね、じゃあ僕との仲直りもすぐにできそうですね
1022 名前:デフォルトの名無しさん [2020/07/05(日) 14:28:26 ID:9F15TCk0.net] >>984 書き直して決め打ちコピペにstaticなんだw 結局publicとprivateの違いはよくわかってないな。 まあ頑張れ。君とはこれまでだ。 >>986 組み込みおじさんって言ってたやんけ(言ってなかったか?)
1023 名前:デフォルトの名無しさん [2020/07/05(日) 14:30:37 ID:MQ9nuMmc.net] >>988 staticにしたのは状態に依存してないからですね
1024 名前:デフォルトの名無しさん [2020/07/05(日) 14:31:51 ID:9F15TCk0.net] 下痢便君は10代後半から20代前半というところかなあ。 ウンコチンコのレベルと絡んでてもおじさんあんまり面白く無いんだよね。 自分でチンコテストのコードあげたけどw でもコードあげたのは偉いと思うので頑張ってね。
1025 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 14:33:06 ID:JiRnWiGC.net] あー、組み込みおじさんにも解るように だよ。 俺自身、組み込みもやるからややこしいが、ずっと前に登場した組み込みおじさんとは別人だよ。 まぁ、慌てて書いたから余計な発言だったか。 もう、この際OOPの利点さえ感じていればなんでもいいことにするよ。 スレも少ないし、ヒートダウンしたし。
1026 名前:デフォルトの名無しさん [2020/07/05(日) 14:33:34 ID:MQ9nuMmc.net] >>990 僕まだ小学生でちゅ
1027 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 14:35:03.91 ID:9F15TCk0.net] あー組み込みおじさん(固有名詞)が居たのね。一般名詞のつもりでした。 この板昨日からなので。
1028 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 14:35:40.42 ID:9F15TCk0.net] >>992 偉いねえ。
1029 名前:デフォルトの名無しさん [2020/07/05(日) 14:37:40.20 ID:MQ9nuMmc.net] 参照透明なメソッドだとテストしやすいしバグの混入も減らせるのでおすすめ! 間違っても>>805 こんな下痢便分割しちゃダメ
1030 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 14:38:27.28 ID:9F15TCk0.net] しかし小学生の下痢便君とかと話ててもこっちは損するばかりだしなあ。 マジで。しかも下痢便君はましな方な可能性さえあるし。 予想以上だった、この板。マジやばい。ASP.NETのオブジェクトを使ってるなら オブジェクト指向だし。
1031 名前:デフォルトの名無しさん [2020/07/05(日) 14:38:41.11 ID:MQ9nuMmc.net] >>993 マジで!? ID:gS37C1rZ これ絶対君だと思ってた、言ってること薄っぺらいしアホだし
1032 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 14:42:18.59 ID:h7Qz+vpg.net] 不毛 彡 ⌒ ミ (´・ω・`)
1033 名前:デフォルトの名無しさん [2020/07/05(日) 14:43:23.60 ID:9F15TCk0.net] >>997 マジで某アメリカの誰でも知ってるとこの中の人だよ。 日本人あんまり居ないので、これ以上はやばいからどこだか 下痢便君に教えるわけが無いけど。 インデントとか言ってたの君だっけ? そんなくだらない(しかも的外れな)揚げ足取りじゃなくて、 君のコード、根本的なとこに問題あるんだけど、わからない人に わかれと言ってもわからないだろうからなあ。 ちゃんとOOをやったらわかるかも。頑張ってね。下痢便君w
1034 名前:デフォルトの名無しさん [2020/07/05(日) 14:43:28.02 ID:MQ9nuMmc.net] >>998 ハゲて頑張っておられる方にお詫び申し上げます
1035 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 16日 14時間 55分 52秒
1036 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています