カプセル化■プライベートメソッドをテストする方法
1 :デフォルトの名無しさん :2020/07/05(日) 20:47:46.60 ID:M+BkbwUs.net ■短い回答 プライベートをテストしたい場合は設計に問題があるので、パブリックに変更してテストしましょう ■これに対する(変な人の)驚いた反論 プライベートを一時的にパブリックにして、テストが終わったら プライベートに戻すなんてやるわけないだろw ↑誰もそんなコトしろなんて言ってない ■テスト専門家による回答 t-wadaのブログ https://t-wada.hatenablog.jp/entry/should-we-test-private-methods 短くまとめると、プライベートなメソッドのテストを書く必要は 無い と考えています。 ほとんどのプライベートメソッドはパブリックメソッド経由でテストできるからです。 プライベートメソッドは実装の詳細であり、自動テストのターゲットとなる「外部から見た振る舞い」ではありません。 プライベートなメソッドのテストに関しては、4つの考え方があります。 ・パブリックメソッド経由でテストする ・別クラスのパブリックメソッドとする ・テスト対象の可視性を(やや)上げる ・プライベートのまま、リフレクションでアクセスしてテストを書く パブリックメソッド経由でテストする 多くの場合、そのクラスのパブリックメソッド経由でプライベートメソッドのテストも同時に行えます。テストできているか不安があるならテストカバレッジを確認しましょう。 別クラスのパブリックメソッドとする プライベートなメソッドのテストを書きたいということは、実はテスト対象の責務が多すぎることを示唆している場合があります。 テストがどうしても書きたい場合は、その責務はテスト対象のプライベートな振る舞いではなく、他の誰かのパブリックな振る舞いなのでしょう。
428 :デフォルトの名無しさん :2020/07/29(水) 11:38:43.76 ID:yJ6wpcWu.net 自分の理解能力の無さを相手が無能だからと責任転嫁するココナツ
429 :デフォルトの名無しさん :2020/07/29(水) 11:39:49.67 ID:yJ6wpcWu.net >>427 僕は平置きでわかる派ですよ 完全に理解した
430 :デフォルトの名無しさん :2020/07/29(水) 11:41:33.11 ID:1IRv8wde.net で、結局のところ Javaで「単体で平置きできる関数」って何なの? コードで示してくれるといいんだか
431 :デフォルトの名無しさん :2020/07/29(水) 11:42:06.25 ID:yJ6wpcWu.net >>430 () -> "coconut"
432 :デフォルトの名無しさん :2020/07/29(水) 11:43:59.64 ID:Lu0VWFvI.net >>431 んん? それどこに置いてるの?
433 :デフォルトの名無しさん :2020/07/29(水) 11:54:07.92 ID:10XNhQ52.net >>430 単体でおける関数ってわかりますよね? それを平置きするんですよ
434 :デフォルトの名無しさん :2020/07/29(水) 12:47:42.81 ID:yJ6wpcWu.net >>432 どこだと思う?
435 :デフォルトの名無しさん :2020/07/29(水) 13:01:46.48 ID:yJ6wpcWu.net 無限ココナツ Stream.generate(() -> "coconut").forEach(System.out::println);
436 :デフォルトの名無しさん :2020/07/29(水) 13:03:28.35 ID:yJ6wpcWu.net 変数にセット可能、引数として渡すことができる、戻り値にセットできる これが平置き三原則
437 :デフォルトの名無しさん :2020/07/29(水) 13:06:58.34 ID:vCcy0xOf.net Javaはクラスに包んで間接的に置くしかない これが最大の欠陥
438 :デフォルトの名無しさん :2020/07/29(水) 13:29:06 ID:Lu0VWFvI.net 単体でもなければ平置きでもなくて草生える
439 :デフォルトの名無しさん :2020/07/29(水) 13:34:14 ID:XTBRGYt/.net 用語はともかくラムダ式のことだと分かってスッキリした
440 :デフォルトの名無しさん :2020/07/29(水) 16:49:02.49 ID:jnMYxU1A.net 二つ折りじゃないですか!
441 :デフォルトの名無しさん :2020/07/29(水) 18:21:34 ID:TpnjQV/H.net 第一級函数のことかと思ったよ俺は 馬鹿は1つしかモノを知らないから適当に言っても1つの意味にしかならないが他人はお前よりモノを知ってるから第一級函数なのかラムダ式なのかそれとも自分が知らない別の概念なのか判断できないんだよ
442 :デフォルトの名無しさん :2020/07/29(水) 18:32:59 ID:T5TGNuPi.net 結局単にラムダ式のことを言おうとしてたん? それだけのことをなぜ平置きとか言い出しちゃったのかなw 見苦しいからもうこれ以上レスいらんぞ
443 :デフォルトの名無しさん :2020/07/29(水) 18:34:25 ID:yJ6wpcWu.net 平置き式のこと?
444 :デフォルトの名無しさん :2020/07/29(水) 18:35:43 ID:jnMYxU1A.net 平置きとかメルカリ用語じゃねーのか
445 :デフォルトの名無しさん :2020/07/29(水) 18:40:24 ID:yJ6wpcWu.net 単体で置ける関数のことを単体関数と言い、それを平置きして式化したものが平置き式 ラムダ式なんて西洋かぶれのバズワードを使わなくても説明できるのができるプログラマ
446 :デフォルトの名無しさん :2020/07/29(水) 18:43:48 ID:T5TGNuPi.net 必死かコイツ
447 :デフォルトの名無しさん :2020/07/29(水) 18:59:31 ID:zMv38iUQ.net みーっけた! こうゆう関数併記するスタイルの事じゃないの? プログラミングのお題スレ Part18 http://itest.5ch.net/mevius/test/read.cgi/tech/1594702426/124 https://github.com/katahiromz/3D function add_line(x0, y0, z0, x1, y1, z1) { } function set_pos(x, y, z) { } function set_dir(dx, dy, dz) { } function walk(delta) { } function turn_dir(dx, dy, dz) { } function turn_angle(angle) { } function init() { } function koch(degree, step) { } function draw() { } function animate() { }
448 :デフォルトの名無しさん :2020/07/29(水) 19:19:06.70 ID:bUZt8h4Z.net それは関数を単体でおいただけ 平置きとは違う
449 :デフォルトの名無しさん :2020/07/29(水) 20:44:56.64 ID:f9ldngpW.net フォルダに平積みする事か? A.class B.class C.class D.class E.class
450 :デフォルトの名無しさん :2020/07/29(水) 20:48:45.31 ID:kq2jMqPx.net 本の平積みと同じ意味だよ 平にするって所を強調したいんだ
451 :デフォルトの名無しさん :2020/07/29(水) 23:30:32.60 ID:eNj62kDo.net ポリモーフィズムって押し付けなんだよね 汎用的な機能を提供する 与える引数だけが戻り値を決めるような 純粋な関数を1つくればDRYになっていいものを、 何らかの意図を持った特化した関数を 幾つも定義しなければならない 意味がわからない。 インスタンスには極力状態を持たせない方が 圧倒的にバグが少ない UI制御の状態ならGUI上だけで 本当に重要な状態ならDB上やセッションとかで 持つくらいで大体は事足りる クラスのフィールドなんてほとんど使わんよ 引数と戻り値 配列 連想配列をとことん突き詰めれば 大抵の事はなんでも出来る。 これが構造化プログラミング
452 :デフォルトの名無しさん :2020/07/29(水) 23:41:24.99 ID:JOuph4+C.net ttps://i.imgur.com/qRx3DMV.gif
453 :デフォルトの名無しさん :2020/07/30(木) 00:11:51.67 ID:3OVhn9K/.net >>451 それが設計意図がキチンとドキュメントにまとまっていれば こうなったときに引数増やすしか無いかとかわかるんだけど だいたいドキュメント書かないバカがノリで作ったようなポリモだから 頭にくるんだよね 作ったやつのおバカなドヤ顔に拳をブチ込んでその場で正座させながらドキュメント書かせたい
454 :デフォルトの名無しさん :2020/07/30(木) 08:29:08.61 ID:aMAEXQwY.net >>451 単純にモジュール切り分けテクニックの一つなだけだよ。 変な切り分けすればそりゃ可読性悪くなるわ。 オブジェクト指向をいつでもすべしみたいな馬鹿が誤解をひろめたのがいかんだけで有用なテクニックの一つではある。
455 :デフォルトの名無しさん :2020/07/30(木) 10:11:39.63 ID:6431nXoC.net ドキュメントとセットでの運用なら、 それ自体では完結してない、つまりは欠陥品ってことでしょ ドキュメントの有無や書いた奴の頭の程度で決定したりはしない
456 :デフォルトの名無しさん :2020/07/30(木) 10:58:41.66 ID:P2gSGZs3.net >>455 visualstudioがWordやExcelと連携してくれれば楽なのにね
457 :デフォルトの名無しさん :2020/07/30(木) 12:33:29 ID:6431nXoC.net コードそのものが「文芸的」になる必要がある
458 :デフォルトの名無しさん :2020/07/30(木) 13:15:44 ID:XKQCIMIB.net ソリューションエクスプローラーなんて芋っポイのやめてWordの項目一覧でいいよ そこの項目に対応したソースを記述すればいい
459 :デフォルトの名無しさん :2020/07/30(木) 13:21:46 ID:odFw/CMl.net ソリューションエクスプローラのCMakeターゲットビュー見てみろよ。 そんなこと言えなくなるだろ。
460 :デフォルトの名無しさん :2020/07/30(木) 13:24:30 ID:XKQCIMIB.net ドキュメント主導型にして欲しい
461 :デフォルトの名無しさん :2020/07/30(木) 13:28:55 ID:odFw/CMl.net それはちょっと違うかもしれないな。 プログラミング言語は自然言語と比較して非常に制約がきつく、それは機械が読めるほどだ。 自然言語で書くよりもプログラミング言語で書く方が誤解の余地が少ない優れた文書になるのではないか。
462 :デフォルトの名無しさん :2020/07/30(木) 14:36:27 ID:jRBN85oj.net data Status = Dead | Alive you == not Alive お前はもう死んでいる
463 :デフォルトの名無しさん :2020/07/31(金) 00:38:15.14 ID:91XEAcCM.net https://img.gifmagazine.net/gifmagazine/images/710205/original.gif
464 :デフォルトの名無しさん :2020/07/31(金) 00:57:13.70 ID:QZ7aSShZ.net http://imgcc.naver.jp/kaze/mission_anm/USER/20140905/93/994463/52/250x186x42178393ac27032c611b2149.gif
465 :デフォルトの名無しさん :2020/07/31(金) 01:01:24 ID:QZ7aSShZ.net http://imgcc.naver.jp/kaze/mission_anm/USER/20140905/93/994463/79/326x205x7ffb3f5b8763642d29df7d79.gif
466 :デフォルトの名無しさん :2020/07/31(金) 07:44:49.12 ID:0J+iX777.net >>455 プログラムで表現しずらいものをドキュメントで補うんだよ。 SIerに提出するような糞アリバイドキュメントばっかりつくってると理解できないだろうけれど。
467 :デフォルトの名無しさん :2020/07/31(金) 09:46:54.45 ID:UpUkpE84.net プライベートメソッドのドキュメントを作るんだろ? 欠陥品じゃん
468 :デフォルトの名無しさん :2020/07/31(金) 12:50:08.54 ID:0J+iX777.net プライベートだろうとパブリックだろうと、構造がコードでわかりにくけりゃ作るよ。 そういう表面的なことでしか判断できないのは頭が悪い証拠だと思うよ。
469 :デフォルトの名無しさん :2020/07/31(金) 13:53:02.12 ID:J/Hsbz2N.net 和田信者は頭が欠陥品
470 :デフォルトの名無しさん :2020/07/31(金) 15:26:19 ID:+g+2reUI.net 要するに馬鹿にはプログラミングさせるなということだな 馬鹿が書くと変なものをprivateにしてしまって大混乱 プライベートメソッドをテストせざるを得なくなる
471 :デフォルトの名無しさん :2020/07/31(金) 20:54:13.68 ID:UpUkpE84.net 普通は表面的=形式的なモンで判断するんでしょこの業界 だって形式しかねーもん
472 :デフォルトの名無しさん :2020/08/01(土) 01:42:55.39 ID:JfG80/LC.net 構造図みたいなのはプログラム内には書けないから それは文章化しておくしかないから仕方がない
473 :デフォルトの名無しさん :2020/08/01(土) 13:40:53.00 ID:ZqZOxFea.net https://i.imgur.com/HrbzgM9.gif
474 :デフォルトの名無しさん :2020/08/03(月) 01:10:10 ID:WN+omvah.net https://i.imgur.com/qRx3DMV.gif
475 :デフォルトの名無しさん :2020/08/30(日) 15:04:18.01 ID:i3Iv6gG3.net >>397 >相変わらずオブジェクト指向信じて >頑張ってるJavaプログラマさん達に >お伺いしたいんだけどさぁ ならば「チンポがシコシコする」という日本語表現は、文法的に正しいのか? チンポ「を」シコシコするのではなくて、チンポ「が」シコシコする。この場合、「チンポ」は主語となる。 オブジェクト指向で言う「集約」は2種類あって、全体(俺)と部分(チンポ)が繋がっている場合と、 全体(俺)と部分(チンポ)が別々になっている場合とが考えられる。けれども「チンポ」はそれ自体 が独立した生き物であり、所有者の意思とは無関係に、勃起して「シコシコする」。 例えば寝てる時にエロい夢みて朝起きてみたらチンコが勃起して射精してたとか。 違うか? 「胸がドキドキする」は良いが、「チンポがシコシコする」はダメな理由を、50字以内で述べろ!
476 :デフォルトの名無しさん :2020/11/16(月) 10:13:57.47 ID:PECNoX7v.net >>397 要するに君のスペックや君が手掛けてきたシステムは オブジェクト指向を検討する程のものじゃなかったし 今後もオブジェクト指向を検討するようなシステムに 君が係ることもなんだろうということは理解できた
477 :デフォルトの名無しさん :2023/05/14(日) 20:10:16.82 ID:z2Bd8gQgU 松野博ー『統─教会問題について、信教の自由を保障する観点から慎重に判断する必要がある 〔要するに政教分離無視,Νρ信者を手足の如く使い倒さないと下野するのて゛利権を維持する観点から慎重に判断する必要がある!〕』 林芳正「民間人なと゛への攻撃は國際法違反で断じて正当化できない[た゛が,キチカ゛ヰナセ゛レンスキ━か゛□シア民間人を殺害するのは桶!〕」 山際大志郎『法に触れることはやってないので議員は続ける(霊感商法やら法に触れること促進してきたけと゛知ったこっちゃねえわ!)』 観光庁もとい地球破壊税金泥棒庁「GoToトラベ儿不正受給が2億圓以上あって大手には返金求めるんだぞ〔って一応口て゛は言ってるけど もちろん追求する氣ねえし,持続化給付金みたいに告訴と゛ころか罸金を求める気すら微塵もねえわ、だって天下り賄賂癒着先た゛からな〕」 葉梨康弘「死刑の八ンコ押すた゛けの地味な法務大臣(蓄財з億圓の斉藤鉄夫國交省みたいな賄賂癒着利権とは無縁で儲からねえわクソか゛]』 岸田増税文雄&翔太朗「税金で莫大な温室効果カ゛スまき散らして世界−周旅行して公用車使って写真撮ってお土産買って遊び倒すのが公務!』 創価学會員は、何百萬人も殺傷して損害を与えて私腹を肥やし続けて逮捕者まて゛出てる世界最惡の殺人腐敗組織公明党を 池田センセ―か゛囗をきけて容認するとか本気て゛思ってるとしたら侮辱にもほと゛か゛あるそ゛!https://i.imgur.com/hnli1ga.jpeg
132 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★
本文 スレッドタイトル 投稿者