2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

カプセル化■プライベートメソッドをテストする方法

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
名前: E-mail (省略可) :

read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★