カプセル化の有害性、 ..
[2ch|▼Menu]
620:デフォルトの名無しさん
20/07/04 11:39:33.69 pmIasW6W.net
>>597
大規模システムってみずほとか?
テストは組み合わせを考えると膨大になるのだけれども
最小単位のunit testだとそうでもなくてだからこそunit testは大事なんよ
Salesforceは知ってる?クラウド型のサービスでアプリ作ったりできるんだけど
カバレッジが75%以下だとデプロイできなくなってる
大規模だからビジネスシステムだからテストしなくていいはちょっと今の時代ありえない

621:デフォルトの名無しさん
20/07/04 11:39:35.50 MJUVFEDB.net
昔の組み込みの少ない経験だけでイキってるんやろ

622:デフォルトの名無しさん
20/07/04 11:40:52.54 M3d71N9d.net
>>592
> privateでテストできないならpublicに設計し直すんやって言ってたじゃん
> privateのままでテストするのに何も大変なことなんてない
自分で答え言ってるじゃんw
privateでテストできないならpublicに設計し直すんだから
privateのテストは大変じゃなくて必要ないってこと

623:デフォルトの名無しさん
20/07/04 11:41:39.32 M3d71N9d.net
>>593
> わかってないのはそっちの方、unit testでカバーしてなかったら
> 仕様通り動いてるのを確認できない
ユニットテストでカバーしないなんて一言も言ってないんだが?
何に反論してるんだよ

624:デフォルトの名無しさん
20/07/04 11:41:45.39 pmIasW6W.net
>>598
現場次第だから現場に従うんだっていうのはそれはサラリーマンとして生き残るために
そうせざるを得ないだけだよね、品質の高いプログラムを作るなら常にテストはしないといけない
世界標準がないからいんだっていうのじゃないよ

625:デフォルトの名無しさん
20/07/04 11:42:23.92 M3d71N9d.net
>>594
> privateなメソッドであっても事前条件も事後条件もある
> unit testでカバーしてれば壊れてないことを確認できるからリファクタリングが可能になる
最初からpublic経由でテストするって言ってるよね?

626:デフォルトの名無しさん
20/07/04 11:43:01.27 czCytfqY.net
あたい知ってるよ
カバレッジテストを合格するために、privateをpublicにしてメソッドを呼び出せばいいんだよね。
あたい知ってるよ
カバレッジテストを合格するために、メソッドの中に記載されている条件文全て消せばいいんだよね。
あたい知ってるよ
カバレッジテストを合格するために、メソッドの中に記載されているコードを全部消せばいいんだよね。

627:デフォルトの名無しさん
20/07/04 11:43:01.49 pmIasW6W.net
>>601
privateのテストは必要だよ
privateでテストできないからpublicにすると言ってるのは君の方
僕はprivateでテストするべきだって立場

628:デフォルトの名無しさん
20/07/04 11:43:56.50 pmIasW6W.net
>>602
君はprivateのテストは書かないってことだから
privateのメソッドはunit testでカバーされてないよねってこと

629:デフォルトの名無しさん
20/07/04 11:44:22.90 M3d71N9d.net
>>606
> privateのテストは必要だよ
だから何度も言ってるがprivateでテストしたいと思ったら
publicに変更するんだから、privateのテストはしなくてすむと言ってる
お前短絡思考なんだよ。
privateはprivateのままテストしなくちゃいけないんだって思ってるだろ

630:デフォルトの名無しさん
20/07/04 11:44:50.09 pmIasW6W.net
>>604
それはunit testにならないよってこと
privateのメソッドをテストできてないよってこと

631:デフォルトの名無しさん
20/07/04 11:45:01.10 M3d71N9d.net
>>607
> 君はprivateのテストは書かないってことだから
> privateのメソッドはunit testでカバーされてないよねってこと
なんですぐ上でprivateはpublic経由でテストするって言ってるのに
理解できてないの?

632:デフォルトの名無しさん
20/07/04 11:45:43.09 pmIasW6W.net
>>608
テストしたいからpublicにするのが間違ってて
privateのままテストするのがオブジェクト指向として正当なやり方

633:デフォルトの名無しさん
20/07/04 11:46:08.10 M3d71N9d.net
>>609
> それはunit testにならないよってこと
> privateのメソッドをテストできてないよってこと
publicメソッド経由でテストしますがなにか?
publicメソッド経由でテストするのが大変なものは
設計を変更すべきなんだよ

634:デフォルトの名無しさん
20/07/04 11:46:12.42 pmIasW6W.net
>>610
public経由でのテストはunit testではないよってこと

635:デフォルトの名無しさん
20/07/04 11:47:15.08 M3d71N9d.net
>>611
> テストしたいからpublicにするのが間違ってて
> privateのままテストするのがオブジェクト指向として正当なやり方
だからprivateのままpublicメソッド経由でテストすりゃいいじゃん(笑)
何度も言ってる。
それが難しいなら、それはコードがすでに複雑である証拠なので
複雑なものを直さないでテストすると破綻する

636:デフォルトの名無しさん
20/07/04 11:47:24.81 pmIasW6W.net
>>612
だからテストのためにオブジェクト変えてるのはprivateのテストを知らないだけだから
本末転倒だってこと

637:デフォルトの名無しさん
20/07/04 11:47:48.99 M3d71N9d.net
>>613
> public経由でのテストはunit testではないよってこと
その根拠は?お前のユニットテストの定義は?
それはどこで勉強したこと?

638:デフォルトの名無しさん
20/07/04 11:48:47.27 M3d71N9d.net
>>615
> だからテストのためにオブジェクト変えてるのはprivateのテストを知らないだけだから
複雑だからオブジェクトを変えてるんだよ
アホなのか?
privateのテストはpublicメソッド経由でやる
それが難しいなら、コードが複雑だから設計を治す

639:デフォルトの名無しさん
20/07/04 11:48:55.01 1AXxY7r6.net
>>599
アメリカの某有名パッケージだね。
その界隈では知ってる限りunit testでカバレージを求められることは無いし
GAFAあたりでも分岐ごとにやらないはず。エッジケースをどうするかとかは
聞かれるけど。
だいたいデベロッパーテストで全分岐をカバーしたところであまり意味はないし。
どのみちQAに回すわけで他人がやんなきゃ意味ない。
カバレージという概念を求められるのが少なくともアメリカでは航空宇宙や
自動車のようだし、良い悪いは別として、これが求められるようなところは
OOとかカプセル化とかが大事なプロジェクトとはちょっと違うよね。
千人のデベロッパーに五百人のテスターで組み込みとかやらないでしょ。
いや知らんのでイメージだけど。

640:デフォルトの名無しさん
20/07/04 11:49:13.09 pmIasW6W.net
>>614
public経由したらunit testではないよってこと
privateメソッドをテストすることは難しいことではないよ

641:デフォルトの名無しさん
20/07/04 11:49:55.50 M3d71N9d.net
>>619
> public経由したらunit testではないよってこと
だからその主張の根拠は何?
お前のオレオレルールの話なんか
何のやくにも立たないだろ

642:デフォルトの名無しさん
20/07/04 11:50:29.94 MJUVFEDB.net
誰のためにユニットテストするの?w
語ってるべき論は誰かを想定しちゃってない?w

643:デフォルトの名無しさん
20/07/04 11:50:46.08 pmIasW6W.net
>>616
unit testは最小単位だから、世界共通の定義
publicを経由してたら内部でどんなにprivateなメソッドを呼び出しまくってても
unit testになるなんて、定義はどこにもないのでpublic経由はunit testに当てはまらない

644:デフォルトの名無しさん
20/07/04 11:51:29.32 MG3qPS+J.net
名前をつけるとpublicだろうがprivateだろうがテストしなきゃいけない
→つまり無名にしてその場で使い捨てればテストしなくてOK!

645:デフォルトの名無しさん
20/07/04 11:51:49.54 M3d71N9d.net
もう答えがすでに出てる話をまだづつても無意味なんだけどなw

t-wadaのブログ
URLリンク(t-wada.hatenablog.jp)

私の回答
短くまとめると、プライベートなメソッドのテストを書く必要は 無い と考えています。
ほとんどのプライベートメソッドはパブリックメソッド経由でテストできるからです。プライベートメソッドは実装の詳細であり、自動テストのターゲットとなる「外部から見た振る舞い」ではありません。
ただし、この議論にはプロダクトコードもテストコードも自分で書いていることという前提があります。プロダクトコードに手を入れられず、テストコードも無いレガシーコードに対しては、リフレクションは強力な手段です。
プライベートなメソッドのテストに関しては、4つの考え方があります。
パブリックメソッド経由でテストする
別クラスのパブリックメソッドとする
テスト対象の可視性を(やや)上げる
プライベートのまま、リフレクションでアクセスしてテストを書く
パブリックメソッド経由でテストする
多くの場合、そのクラスのパブリックメソッド経由でプライベートメソッドのテストも同時に行えます。テストできているか不安があるならテストカバレッジを確認しましょう。

646:デフォルトの名無しさん
20/07/04 11:52:44.14 pmIasW6W.net
>>617
privateのテストはprivateを直接テストしないとunit testにならないよ

647:デフォルトの名無しさん
20/07/04 11:52:52.72 M3d71N9d.net
>>622
> unit testは最小単位だから、世界共通の定義
> publicを経由してたら内部でどんなにprivateなメソッドを呼び出しまくってても
> unit testになるなんて、定義はどこにもないのでpublic経由はunit testに当てはまらない
それはお前の定義であって、なんの根拠もないことはわかってる

648:デフォルトの名無しさん
20/07/04 11:53:29.28 M3d71N9d.net
>>625
> privateのテストはprivateを直接テストしないとunit testにならないよ
何度も「根拠を言わないことを繰り返す」のは
根拠がないからってことだよねw

649:デフォルトの名無しさん
20/07/04 11:53:30.11 czCytfqY.net
>>615
<


650:a href="../test/read.cgi/tech/1592491656/605" rel="noopener noreferrer" target="_blank" class="reply_link">>>605の皮肉と同じだよな。 テストのために、コード書き換えてどうするんだよってね。



651:デフォルトの名無しさん
20/07/04 11:53:42.19 pmIasW6W.net
>>624
誰だよそれ、YouTuberか?
権威主義的に誰かにすがりつくような真似をするな!

652:デフォルトの名無しさん
20/07/04 11:54:47.69 pmIasW6W.net
>>627
根拠は示したけどね、理解する気がないだけなんじゃない?

653:デフォルトの名無しさん
20/07/04 11:54:52.11 M3d71N9d.net
>>628
> テストのために、コード書き換えてどうするんだよってね。
お前の目的は、テストがしづらい複雑なコードを変えないことなの?(笑)
それともちゃんとテストが出来るコードを開発することなの?
どっちなのさ
目的を理解してるか?

654:デフォルトの名無しさん
20/07/04 11:55:05.15 MJUVFEDB.net
「メソッド単位のunit テストを強制されてるのです」ww

655:デフォルトの名無しさん
20/07/04 11:55:51.40 M3d71N9d.net
>>628
> 誰だよそれ、YouTuberか?
え? t-wadaさんを知らないってそれまずくね?w
URLリンク(twitter.com)
プログラマ。TDD 実践者。power-assert-js 作者。
『テスト駆動開発』『プログラマが知るべき97のこと』『SQLアンチパターン』を翻訳/監訳しました。
(deleted an unsolicited ad)

656:デフォルトの名無しさん
20/07/04 11:56:33.70 M3d71N9d.net
プログラマでテスト駆動開発者の@t_wadaさんをお招きした
社内勉強会での様子をお届け!#メルカリな日々
URLリンク(mercan.mercari.com)

657:デフォルトの名無しさん
20/07/04 11:56:48.02 pmIasW6W.net
>>632
TDDとか知らないの?

658:デフォルトの名無しさん
20/07/04 11:57:31.94 czCytfqY.net
>>631
おめーこそ、テストの目的を理解してんのか、カス。
privateが記述されているってことは、外部から呼び出したら駄目なメソッドだ。
それを外部から呼び出して単体テスト合格とかふざけんな。
テストなめてんだろ。

659:デフォルトの名無しさん
20/07/04 11:58:00.26 M3d71N9d.net
>>635
TDDで有名な人の名前って知ってる?

t-wadaのブログ
URLリンク(t-wada.hatenablog.jp)
URLリンク(twitter.com)
プログラマ。TDD 実践者。power-assert-js 作者。
『テスト駆動開発』『プログラマが知るべき97のこと』『SQLアンチパターン』を翻訳/監訳しました。

> 私の回答
> 短くまとめると、プライベートなメソッドのテストを書く必要は 無い と考えています。
>
> パブリックメソッド経由でテストする
(deleted an unsolicited ad)

660:デフォルトの名無しさん
20/07/04 11:58:12.80 pmIasW6W.net
>>633
有名な人を自分は知ってるんだ、だから自分が正しいんだって論旨かの?
その人のことを君は知ってるんだ、すごいねwww

661:デフォルトの名無しさん
20/07/04 11:58:45.56 M3d71N9d.net
>>636
> おめーこそ、テストの目的を理解してんのか、カス。
> privateが記述されているってことは、外部から呼び出したら駄目なメソッドだ。
↑それ(外部から呼び出したらだめだ!)はテストの目的じゃないよw

662:デフォルトの名無しさん
20/07/04 11:59:28.07 czCytfqY.net
で、でたー!!!
有名人の権威に頼る詭弁!
流石、詭弁のプロッ!

663:デフォルトの名無しさん
20/07/04 11:59:33.33 pmIasW6W.net
>>637
知らない、誰それ、興味もない
人の名前覚えて品質の高いプログラム作れるようになるわけじゃないし
そういうこと頑張ってるのってただの意識高い系じゃない?www

664:デフォルトの名無しさん
20/07/04 11:59:35.76 M3d71N9d.net
>>638
> 有名な人を自分は知ってるんだ、だから自分が正しいんだって論旨かの?
そこはさぁ、専門家が言っていることは正しいんだって言うべきじゃね?w
専門家以外に、誰を信じればいいのか知らんが

665:デフォルトの名無しさん
20/07/04 12:00:04.79 M3d71N9d.net
>>641
つまりそういうこと。お前は「テスト技術」に興味がない

666:デフォルトの名無しさん
20/07/04 12:01:48 M3d71N9d.net
なぜ日本でTDDの専門家といって一番目に出てくるような人を知らないで
テストの話について語っているのか?
勉強したら必ず何度も目にする名前だろうに

667:デフォルトの名無しさん
20/07/04 12:05:38.40 pmIasW6W.net
>>643
僕は@t_wadaさんを知らないだけですよ
有名な人の名前を知ってるから自分はテスト技術に興味があって正しい知識を持ってるんだって思ってる?
論理を無視した権威による詭弁としか思えないし、それってただのマウンティングにしかならないんじゃないですか?
俺はt_wadaさんのこと知ってんだぞ!!おめーどーなっても知らねえからな!みたいな中卒ヤンキーのマインドを
お持ちなのはわかったけど、議論の向き先としてそっちで良いのって僕は思いましたよ

668:デフォルトの名無しさん
20/07/04 12:06:25.67 M3d71N9d.net
> 僕は@t_wadaさんを知らないだけですよ
その意味がわかってないんだろ?
お前は勉強した必ず目にする名前を知らないって言ってるんだよ
つまり勉強したことがないってこと

669:デフォルトの名無しさん
20/07/04 12:07:22 XvIYAIJA.net
いいんじゃね、全てのメソッドをテストしたけりゃすればw
ただそれを強制されてることが一般的だと思って奴がいるのは滑稽だなw

670:デフォルトの名無しさん
20/07/04 12:08:56 pmIasW6W.net
>>646
人の名前覚えて悦に入る人の心境がわからないんだよなー
僕はプログラムのことにしか興味がないから
誰がそれを書いたのかよりも書いてある内容の方に興味がある
執筆者の名前を覚えて勉強した気になってるだけじゃないの?

671:デフォルトの名無しさん
20/07/04 12:09:30.14 M3d71N9d.net
パブリックメソッド経由でテストする
多くの場合、そのクラスのパブリックメソッド経由でプライベートメソッドのテストも同時に行えます。
テストできているか不安があるならテストカバレッジを確認しましょう。
別クラスのパブリックメソッドとする
プライベートなメソッドのテストを書きたいということは、実はテスト対象の責務が多すぎることを
示唆している場合があります。テストがどうしても書きたい場合は、その責務はテスト対象の
プライベートな振る舞いではなく、他の誰かのパブリックな振る舞いなのでしょう。テスト対象の
プライベートメソッドを「クラスの抽出」や「メソッド/関数の移動」を使って、テスト対象の
コラボレータのパブリックメソッドとして抽出し、普通にパブリックメソッドとしてテストしましょう。
テスト対象の可視性を(やや)上げる
例えば Java では、同一のパッケージからのみアクセスできる可視性があり(正式名称ではありませんが
「パッケージプライベート」と呼ばれます)、テストを同一パッケージに配置することでテストから
アクセスできるような設計を行うことがあります。(ただし、この質問の場合は JavaScript なので、この手段はとれません)
プライベートのまま、リフレクションでアクセスしてテストを書く
リフレクションは最後の手段であり、強力な手段でもあります。プロダクトコードに手を入れることが
できない状況や、レガシーコード(テストコードの無いコード)に対する「仕様化テスト(Characterization Test)」を
書いているような状況では、リフレクションは唯一の、かつ強力な手段になります。プライベートメソッドに
テストを書くことのデメリットを理解しつつ、黒魔術の強力さを堪能しましょう。
(ただし、この質問の場合は JavaScript なので、この手段はとれません。JavaScript は比較的緩い言語ですが、クロージャの情報隠蔽は非常に強固です)
まとめ
繰り返すと、プライベートなメソッドや関数をテストする必要は無いと考えています。プライベートなメソッドは、実装の詳細であるからです。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

672:デフォルトの名無しさん
20/07/04 12:10:37.41 M3d71N9d.net
>>648
> 誰がそれを書いたのかよりも書いてある内容の方に興味がある
>>649にあなたが興味があるはずの「内容の方」書きました。
本当に興味があるなら読んでね(読まないだろうけどw)

673:デフォルトの名無しさん
20/07/04 12:14:01.28 pmIasW6W.net
>>650
著作権法に違反してない? 大丈夫?
僕はt_wadaさんを知らないし、信奉する立場でもないので
t_wadaさんがそう言ってるからそうなんだと思うことはないよ
内容に興味があるっていうのは、書いてあることをそっくりそのまま
自分の考えにするということではなくて自分の経験や知識に照らし合わせて
自分の考えを持つってことだよ
僕はその文章を読んでprivateメソッドをテストするべきだと思った

674:デフォルトの名無しさん
20/07/04 12:15:48.22 M3d71N9d.net
> 著作権法に違反してない? 大丈夫?
もはや技術の話に反論できなくなったか
引用の範囲で著作権は関係ないな(爆笑)
> 僕はt_wadaさんを知らないし、信奉する立場でもないので
あのさぁ、お前。「t_wadaを知らない」という人の話じゃなくて
その人が言った内容についての話をしろよ

675:デフォルトの名無しさん
20/07/04 12:16:19.37 M3d71N9d.net
> 僕はその文章を読んでprivateメソッドをテストするべきだと思った
それはあなたの感想です。考えは何も述べていません。

676:デフォルトの名無しさん
20/07/04 12:18:15.28 czCytfqY.net
>>639
> ↑それ(外部から呼び出したらだめだ!)はテストの目的じゃないよw
別に、デバッグ目的で一時的にprivateメソッドを呼びたいのなら、勝手に呼んでどうぞ。
だが、テスト工程...特に単体テストでprivateをpublicにするのはアウト。
本来、呼ばれないはずのprivateだったメソッドが呼ばれてしまえば、本来、不合格だったはずのカバレッジテストに合格してしまう可能性が出てくるし、privateメソッドを呼んだことで、本来ありえないクラス内部状態を作ってしまったら、単体テストの結果も変わってしまう。
テストは本番と同じ状態を保たないと駄目だよ。
プログラマーの開発工程におけるデバッグ及び動作確認とテストを混同させていないか?

677:デフォルトの名無しさん
20/07/04 12:19:20.76 XvIYAIJA.net
最後の行ありそう


678:w



679:デフォルトの名無しさん
20/07/04 12:19:46.76 M3d71N9d.net
>>654
> だが、テスト工程...特に単体テストでprivateをpublicにするのはアウト。
ウォーターフォール開発?
テストで問題が出ても問題を上流に戻したらだめって
バグが出ても直したらいかんのかよw

680:デフォルトの名無しさん
20/07/04 12:20:53 M3d71N9d.net
>>654
> プログラマーの開発工程におけるデバッグ及び動作確認とテストを混同させていないか?

今はプログラマーの開発工程におけるデバッグの話ですよ?
動作確認でprivateメソッドを呼んでテストなんてしませんから

681:デフォルトの名無しさん
20/07/04 12:21:57 pmIasW6W.net
>>652
大丈夫かなって正直に思っただけ、君が引用だと思っててもt_wadaさんが勝手に転載してんじゃねえ
ぶっ殺すぞと思ってたらやばいじゃん、t_wadaさんって人を僕は知らないから
君がすごくぶっ殺されたりとかしないかなって思っただけ

t_wadaさんの話を振ったのは君ですよ
t_wadaさんを知らないのかー遅れてるーうひょーって有頂天になって書き込んでたのは君ですよ
僕は内容の話をしましたよ

682:デフォルトの名無しさん
20/07/04 12:22:14 czCytfqY.net
> テストは本番と同じ状態を保たないと駄目だよ。

これを曲解されても困るから補足説明するけど、単体テストって、クラス単体のテストのことな?
クラスを動かすための環境は自由に変えてもいいけど、クラスそのものを弄りかえるなって意味だからな?

683:デフォルトの名無しさん
20/07/04 12:24:12.62 xAj06qrt.net
テストがでかけるアサートと本番動作は普通は異なるがな。
なんでも統一させようとして無理が出るから public, privateの議論はくだらんなと思うわけだ。

684:デフォルトの名無しさん
20/07/04 12:28:01.42 czCytfqY.net
>>657
>>631でなんで、俺に反論した。

685:デフォルトの名無しさん
20/07/04 12:33:59.87 M3d71N9d.net
>>658
やっぱりまだ人の話を続けるんですねw
t_wadaさんが言った「内容」の話をしましょうね
負け組おじさんw

686:デフォルトの名無しさん
20/07/04 12:34:18.71 M3d71N9d.net
>>661
知らんがなw

687:デフォルトの名無しさん
20/07/04 12:35:58.47 M3d71N9d.net
>>660
クラスを動かすための環境というのはクラスの外界ってことはわかってるか?
クラスの外界は変えていいから、テストコードから呼び出すし
クラスの中で呼んでいる外界をモックやスタブで置き換えていいんだよ

688:デフォルトの名無しさん
20/07/04 12:37:35.05 exw+beGf.net
テストの前提として、テストされるコードをいじってはいけない
テストのためにコードをいじってテストが終わったらコードを戻すんだと
本来のコードが仕様通り動くことが保証できない
いじるのなら納品物が変わってくる

689:デフォルトの名無しさん
20/07/04 12:38:43.12 pmIasW6W.net
>>662
t_wadaさんを知らないのかーって言ったのは君で
これがt_wadaさんの神々しい高貴な文章なんだーと引用したのは君じゃん
僕はそれを読みました。読んだ感想を今から言います。よく聞いてください。
privateメソッドをテストするべきだと思いました。

690:デフォルトの名無しさん
20/07/04 12:43:46.70 M3d71N9d.net
>>665
> テストの前提として、テストされるコードをいじってはいけない
> テストのためにコードをいじってテストが終わったらコードを戻すんだと
いるじもなにもコードなんか変更しないだろ

691:デフォルトの名無しさん
20/07/04 12:44:39.72 M3d71N9d.net
>>666
だからお前の感想は聞いてないって言ったよね?
少しはまともな意見も言えるかと思えば感想しかいない。
まあ意見を言った所で専門家よりも説得力がでるとは思えないがなw

692:デフォルトの名無しさん
20/07/04 12:47:54.13 9ghyGMpS.net
>>654
ユニットテストする時は原則毎回新しいインスタンス作るので内部状態はリセットされるよ。
シングルトンがユニットテストやりにくいって言われる理由はこれ。

693:デフォルトの名無しさん
20/07/04 12:48:05.39 M3d71N9d.net
>>666
> t_wadaさんを知らないのかーって言ったのは君で
それは違うよねw
俺がとある専門家の「意見」を持ってきたら、
そいつは誰だーって言い出したのはお前だよねw
↓はい証拠
629 名前:デフォルトの名無しさん[] 投稿日:2020/07/04(土) 11:53:42.19 ID:pmIasW6W [22/31]
>>624
誰だよそれ、YouTuberか?
権威主義的に誰かにすがりつくような真似をするな!

694:デフォルトの名無しさん
20/07/04 12:58:30.51 wkevF9GB.net
privateメソッドだからテストしないとか言ってるやつはキチガイ
早く死んでね

695:デフォルトの名無しさん
20/07/04 13:01:25.78 M3d71N9d.net
専門家の意見としては
パブリックメソッド経由でテストする
多くの場合、そのクラスのパブリックメソッド経由でプライベートメソッドのテストも同時に行えます。
テストできているか不安があるならテストカバレッジを確認しましょう。

別クラスのパブリックメソッドとする
プライベートなメソッドのテストを書きたいということは、実はテスト対象の責務が多すぎることを
示唆している場合があります。テストがどうしても書きたい場合は、その責務はテスト対象の
プライベートな振る舞いではなく、他の誰かのパブリックな振る舞いなのでしょう。テスト対象の
プライベートメソッドを「クラスの抽出」や「メソッド/関数の移動」を使って、テスト対象の
コラボレータのパブリックメソッドとして抽出し、普通にパブリックメソッドとしてテストしましょう。

696:デフォルトの名無しさん
20/07/04 13:02:51.44 pmIasW6W.net
>>670
君が先にその人を出して
僕が誰それなんでそんなの書いたのって聞いただけだよ
そしたら君がt_wadaを知らないのかーって有頂天になったんじゃん
君はt_wadaさんに憧れてるんでしょ?
だからt_wadaさんが書いた文章を引用したんでしょ
憧れとは理解とは最も遠い感情だってプリキュアが言ってました
僕が誰に憧れてるかはわかりますね?

697:デフォルトの名無しさん
20/07/04 13:06:20.56 M3d71N9d.net
>>673
> 僕が誰それなんでそんなの書いたのって聞いただけだよ
だから人に興味があるってことだよね?
無名の人なら、そんな無名なんか知るかー
有名な人なら、権威にすがるなー
っていうんでしたっけ?w
どちらにしろ意見に興味がなく
最初から「人」に文句をつけようと思って、誰か聞いたんでしょ?

698:デフォルトの名無しさん
20/07/04 13:10:46.18 pmIasW6W.net
>>674
t_wadaのブログってリンク提示されてもなにそれとしか思わないから
君がt_wada本人でこれが僕の考えだって示したならなるほどそういうことか
privateメソッドはテストするべきだって思うけど
議論の最中にt_wadaのブログを出されても何いってんだこいつとしか思わない
よくよく話を聞いてみると君はt_wadaさんのことが大変気に入っていて
憧れていてt_wadaさんの言うことは絶対だと思っている
君はt_wadaさんの権威にすがってるだけのつまらない人間なのじゃないかと僕は疑っています

699:デフォルトの名無しさん
20/07/04 13:12:22.76 pmIasW6W.net
外人が書いた本を翻訳しただけで専門家でもなんでもないんじゃない?

700:デフォルトの名無しさん
20/07/04 13:12:24.10 M3d71N9d.net
> t_wadaのブログってリンク提示されてもなにそれとしか思わないから
はい、内容を呼んでないと自白しましたw
なんのために内容の一部まで引用したと思ってるんでしょうかね
読まずに誰それと「人」に文句をつけるための
質問しかしませんでした。

701:デフォルトの名無しさん
20/07/04 13:12:47.77 M3d71N9d.net
>>676
お前の希望を言われたもなぁw

702:575
20/07/04 13:13:09.28 sra5+07B.net
なんで今朝の575からこんなに進んでるの...

703:デフォルトの名無しさん
20/07/04 13:13:57.68 MJUVFEDB.net
子供の喧嘩ですw

704:デフォルトの名無しさん
20/07/04 13:13:59.57 pmIasW6W.net
>>677
どうしてその内容を引用したの?
君はそれが正しいと思ったの? その根拠は提示できる?
できないでしょ、君はt_wadaを専門家だと思ってて
専門家の言うことは正しいのだ、だから内容が正しいのだと思い込んでいる
だからその内容を引用して何かを示した気になってるだけ

705:デフォルトの名無しさん
20/07/04 13:14:24.44 M3d71N9d.net
>>679
根拠ない主張を繰り返すだけのやつが登場するとそうなるよw

706:デフォルトの名無しさん
20/07/04 13:14:41.46 pmIasW6W.net
>>678
外人が書いた本を翻訳したら専門家なのか? そっちの方が希望じゃん

707:デフォルトの名無しさん
20/07/04 13:15:16.84 pmIasW6W.net
>>682
専門家という肩書の権威にすがりつく君のことかな?

708:デフォルトの名無しさん
20/07/04 13:15:33.49 M3d71N9d.net
>>681
正しい根拠はすでに上の方で何度も言ってるじゃんw
それを補完するために専門家の意見を持ってきただけで
じゃあ反対にお前の言うことが正しいという根拠はなんだよ?

709:デフォルトの名無しさん
20/07/04 13:15:46.59 xAj06qrt.net
>>665
その辺は結局組織がどうコードを管理するかってだけの話だ。
バカみたいにがんじがらめにした結果誰もコードをいじらない(リファクタリングしない)
ってことにしかならん。

710:デフォルトの名無しさん
20/07/04 13:16:11.64 M3d71N9d.net
>>683
> 外人が書いた本を翻訳したら専門家なのか? そっちの方が希望じゃん
翻訳「も」してるだけだろw

711:デフォルトの名無しさん
20/07/04 13:17:04.15 pmIasW6W.net
>>668
t_wadaさんの文章はt_wadaさんの感想でしかないよ

712:デフォルトの名無しさん
20/07/04 13:17:18.71 M3d71N9d.net
どうやら翻訳は副業らしいなw

713:デフォルトの名無しさん
20/07/04 13:18:06.68 M3d71N9d.net
>>688
意見と感想の違いぐらいつけようよw
話は簡単じゃないか
t_wadaさんの意見と
お前の感想
説得力があるかどうかだよ

714:575
20/07/04 13:18:30.04 sra5+07B.net
とりあえず、落ち着け。
議題がよくわからんが、落ち着け...落ち着くのだ。

715:デフォルトの名無しさん
20/07/04 13:19:53.55 pmIasW6W.net
>>687
いやいや翻訳だけが全実績じゃん
t_wadaさんがprivateメソッドをテストせずにとても
すばらしいシステムを構築していま全世界で使われてますってことないじゃん
翻訳したからまるで本物の執筆者のように思われてあたかも専門家のように思い込まれてるだけで
専門家でもなんでもなくただの翻訳者だよ

716:デフォルトの名無しさん
20/07/04 13:20:32.65 MJUVFEDB.net
いいんだよ、元から不毛なネタのスレだw

717:デフォルトの名無しさん
20/07/04 13:21:46.90 pmIasW6W.net
>>690
君が説得力を


718:感じたら意見になり、 説得力を感じなかったら感想になるってだけじゃんそれ なにそのガバガバな日本語運用 わかりましたでは今から僕が君を説得してみせます、よく聞いてください privateメソッドはテストするべきです



719:575
20/07/04 13:21:53.40 sra5+07B.net
>>693
それもそうか(諦め)
内容は読んでないけど、まぁ、ROMるか。

720:デフォルトの名無しさん
20/07/04 13:22:11.62 M3d71N9d.net
>>692
なんでググらないでウソ書くの?
そうやって他の人を騙そうとしてるでしょ
URLリンク(t-wada.hatenablog.jp)
職業はコンサルタントであり、プログラマです。最近では技術顧問としてもいくつかの会社を支援しています。
また、自分の自由になる時間には、オープンソースソフトウェアの開発を行っています。
本業はプログラマでありコンサルタントですが、副業としては技術書の出版、具体的には監訳や翻訳に関わっています。
JavaScript でテストを書く際のハードルを大幅に下げるために開発した power-assert は、
Mocha や Jest と組み合わせて使え、 AVA には既に内蔵されており、ありがたいことに世界中で使われるプロダクトまで育ちました。
ひとつ例を挙げるなら、アリババグループで採用頂き、アリペイやアリババクラウドのテストに使われているという話です。

んで、こういう人に比べて、お前はなにかすごいことしたの?

721:デフォルトの名無しさん
20/07/04 13:25:12.35 pmIasW6W.net
>>696
営業努力の賜物やろな、頑張ってるんやなt_wadaさん
僕がなにかしたのかという質問ですが僕はすごいことを発見しました
privateメソッドはテストした方が良いです

722:デフォルトの名無しさん
20/07/04 13:25:49.67 pmIasW6W.net
ほんまt_wadaさん好きやな

723:デフォルトの名無しさん
20/07/04 13:26:38 M3d71N9d.net
>>698
t_wadaさん以外にすごい人がいたら教えて下さいw

724:デフォルトの名無しさん
20/07/04 13:31:25 pmIasW6W.net
>>699
他人に憧れをいだいて必要以上に持ち上げるのが僕は気持ち悪く感じます
僕はすごい人ですが、君に憧れられるのは気持ち悪いです、なのでごめんなさい

725:デフォルトの名無しさん
20/07/04 13:31:55 pmIasW6W.net
振ってしまってなんかごめんなさい

726:デフォルトの名無しさん
20/07/04 13:33:19 pmIasW6W.net
他人を必要以上に持ち上げるのって自分に自信がない人がやりがちなので
アドバイスするとしたら色々経験したがいんじゃないかということですね

727:デフォルトの名無しさん
20/07/04 13:34:54.50 KKcCItOc.net
IT掲示板群 URLリンク(x0000.net)
学術の巨大掲示板群 - アルファ・ラボ URLリンク(x0000.net)<)
UIライブラリ (C#, 2D) を作ったよ
URLリンク(x0000.net)
連続と離散を統一した!
URLリンク(x0000.net)
4Dエンジン(画像有り)
URLリンク(x0000.net)
matrixのライブラリ
URLリンク(x0000.net)
ある強力なFor関数
URLリンク(x0000.net)
SQLライブラリ
URLリンク(x0000.net)
☆ VMを書いた(C#) * x86ではない!
URLリンク(up.x0000.net)
☆ malloc / free を実装してみた (C#)
URLリンク(up.x0000.net)

728:デフォルトの名無しさん
20/07/04 13:48:28.05 iuca8iKQ.net
根拠が聞けるかなと思ったターンで
他人の引用を持ってきて権威に頼っただけである場合
議論は終了である
続ける価値がないから

729:デフォルトの名無しさん
20/07/04 13:50:52.32 M3d71N9d.net
いえ、自分と同じ意見を言ってる人を持ってきただけなので
話は続いてますよ?
でもなぜか、話の続きをやめてしまっているのです。
なぜでしょうね(笑)

730:デフォルトの名無しさん
20/07/04 14:09:00.83 xhESn47n.net
プログラム板でコード使って語りもしない時点で両者どちらも無能
プログラマならコードで主張

731:デフォルトの名無しさん
20/07/04 14:17:35.76 pmIasW6W.net
>>706
有能さんあざーす!コードどこ?

732:デフォルトの名無しさん
20/07/04 14:19:05.65 JeoapmHS.net
privateメソッドとしてどの程度複雑なことをやらせるか、privateメソッドをどの程度使うかについて、感覚の違う2つのスタイルがあるんじゃないか?
一方の極は、privateメソッドには極めて単純なことしかさせず、少しでも複雑な内容なら(他のヘルパークラス等の)publicメソッドに切り出すスタイル。
「privateはpublic経由でのみテストする(直接はテストしない)」という方針を採る場合には、privateメソッドの内容は非常にシンプルな内容に限らざるを得ないし、逆にそうしないと>>555指摘の組み合わせ爆発の問題を回避できない。
>>624>>649で紹介されている議論や、>>588はこの立場なんだろう。
このスタイルでは、下記のスタイルでは1つのprivateメソッドで処理できる内容を、複数のクラスに属するメソッドの協調関係で処理することになる。
これを適切な機能分化がされていると肯定的に捉えるか、必ずしも汎用性があるわけではない小さなヘルパークラスが増えることになり、見通しが悪くなると否定的に捉えるかは考え方によるだろう。
もう一方の極は、privateメソッドだからといって、内容をシンプルに限らなければいけない必然性はないというスタイル。>>589は、こちらの立場なんだろう。
このスタイルでは、public経由でprivateのテストをするというのは現実的ではないから、privateメソッドでも直接テストの対象とすることが必要になる。言語機能の関係でprivateを直接テストすることが難しい場合には、テストのやり方に工夫が必要になる。
メリット・デメリットは前記のスタイルの反対。
こんなふうに整理できるんじゃないかと思うが、どうだろう。

733:デフォルトの名無しさん
20/07/04 14:19:16.92 xhESn47n.net
>>707
主張したいことがあるんでないの?
それを示すコードもあるやろ?

734:デフォルトの名無しさん
20/07/04 14:20:14.26 pmIasW6W.net
>>709
でも僕無能だからコードないよ
君有能だからコードあるよ
早く出すよ

735:デフォルトの名無しさん
20/07/04 14:22:23.00 xhESn47n.net
>>710
俺は別にプログラムのこのスレタイについて主張したいことないからなあw
君はプログラマでプログラムについて何か主張したいんだろ?

736:デフォルトの名無しさん
20/07/04 14:23:09.56 kiJuYkd6.net
privateメソッドだからテストしないとか言ってるやつはキチガイ
早く死んでね

737:デフォルトの名無しさん
20/07/04 14:23:22.38 pmIasW6W.net
>>711
関係ないよ、早くコード出すよ

738:デフォルトの名無しさん
20/07/04 14:23:44.26 pmIasW6W.net
早くコードだすよ!

739:デフォルトの名無しさん
20/07/04 14:27:56.17 xhESn47n.net
>>714
あーこっちがきちがいだったかw
触れないようにするわ

740:デフォルトの名無しさん
20/07/04 14:28:29.45 pmIasW6W.net
www

741:デフォルトの名無しさん
20/07/04 14:33:12.47 xhESn47n.net
このように、コードを使わず偏った主張するやつはだいたい頭がおかしい
この板ではこうやって簡単にこういう奴をあぶり出しできるんよな


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

1404日前に更新/316 KB
担当:undef