■短い回答
プライベートをテストしたい場合は設計に問題があるので、パブリックに変更してテストしましょう
■これに対する(変な人の)驚いた反論
プライベートを一時的にパブリックにして、テストが終わったら
プライベートに戻すなんてやるわけないだろw
↑誰もそんなコトしろなんて言ってない
■テスト専門家による回答
t-wadaのブログ
https://t-wada.hatenablog.jp/entry/should-we-test-private-methods
短くまとめると、プライベートなメソッドのテストを書く必要は 無い と考えています。
ほとんどのプライベートメソッドはパブリックメソッド経由でテストできるからです。
プライベートメソッドは実装の詳細であり、自動テストのターゲットとなる「外部から見た振る舞い」ではありません。
プライベートなメソッドのテストに関しては、4つの考え方があります。
・パブリックメソッド経由でテストする
・別クラスのパブリックメソッドとする
・テスト対象の可視性を(やや)上げる
・プライベートのまま、リフレクションでアクセスしてテストを書く
パブリックメソッド経由でテストする
多くの場合、そのクラスのパブリックメソッド経由でプライベートメソッドのテストも同時に行えます。テストできているか不安があるならテストカバレッジを確認しましょう。
別クラスのパブリックメソッドとする
プライベートなメソッドのテストを書きたいということは、実はテスト対象の責務が多すぎることを示唆している場合があります。
テストがどうしても書きたい場合は、その責務はテスト対象のプライベートな振る舞いではなく、他の誰かのパブリックな振る舞いなのでしょう。
探検
カプセル化■プライベートメソッドをテストする方法
■ このスレッドは過去ログ倉庫に格納されています
2020/07/05(日) 20:47:46.60ID:M+BkbwUs
423デフォルトの名無しさん
2020/07/29(水) 11:26:28.92ID:yJ6wpcWu プログラムでもそうだよね
メソッドを宣言するときは引数はできるだけ広い型
戻り値はできるだけ狭い型
にすることで他のオブジェクトと協調しやすいプログラムができる
なんでもかんでもインターフェイス使おうとするJavaの習慣は誠に遺憾
メソッドを宣言するときは引数はできるだけ広い型
戻り値はできるだけ狭い型
にすることで他のオブジェクトと協調しやすいプログラムができる
なんでもかんでもインターフェイス使おうとするJavaの習慣は誠に遺憾
424デフォルトの名無しさん
2020/07/29(水) 11:27:35.62ID:yJ6wpcWu 他人には厳しいみなさん
425デフォルトの名無しさん
2020/07/29(水) 11:33:51.35ID:2AXsdL6T 自分の説明能力の無さを相手が低脳だからと責任転嫁するヤシ
426デフォルトの名無しさん
2020/07/29(水) 11:36:20.63ID:yJ6wpcWu 我々人間もメソッドなのかも知れませんね
427デフォルトの名無しさん
2020/07/29(水) 11:38:34.39ID:10XNhQ52428デフォルトの名無しさん
2020/07/29(水) 11:38:43.76ID:yJ6wpcWu 自分の理解能力の無さを相手が無能だからと責任転嫁するココナツ
429デフォルトの名無しさん
2020/07/29(水) 11:39:49.67ID:yJ6wpcWu430デフォルトの名無しさん
2020/07/29(水) 11:41:33.11ID:1IRv8wde で、結局のところ
Javaで「単体で平置きできる関数」って何なの?
コードで示してくれるといいんだか
Javaで「単体で平置きできる関数」って何なの?
コードで示してくれるといいんだか
431デフォルトの名無しさん
2020/07/29(水) 11:42:06.25ID:yJ6wpcWu >>430
() -> "coconut"
() -> "coconut"
432デフォルトの名無しさん
2020/07/29(水) 11:43:59.64ID:Lu0VWFvI >>431
んん? それどこに置いてるの?
んん? それどこに置いてるの?
433デフォルトの名無しさん
2020/07/29(水) 11:54:07.92ID:10XNhQ52434デフォルトの名無しさん
2020/07/29(水) 12:47:42.81ID:yJ6wpcWu >>432
どこだと思う?
どこだと思う?
435デフォルトの名無しさん
2020/07/29(水) 13:01:46.48ID:yJ6wpcWu 無限ココナツ
Stream.generate(() -> "coconut").forEach(System.out::println);
Stream.generate(() -> "coconut").forEach(System.out::println);
436デフォルトの名無しさん
2020/07/29(水) 13:03:28.35ID:yJ6wpcWu 変数にセット可能、引数として渡すことができる、戻り値にセットできる
これが平置き三原則
これが平置き三原則
437デフォルトの名無しさん
2020/07/29(水) 13:06:58.34ID:vCcy0xOf Javaはクラスに包んで間接的に置くしかない
これが最大の欠陥
これが最大の欠陥
438デフォルトの名無しさん
2020/07/29(水) 13:29:06.56ID:Lu0VWFvI 単体でもなければ平置きでもなくて草生える
439デフォルトの名無しさん
2020/07/29(水) 13:34:14.86ID:XTBRGYt/ 用語はともかくラムダ式のことだと分かってスッキリした
440デフォルトの名無しさん
2020/07/29(水) 16:49:02.49ID:jnMYxU1A 二つ折りじゃないですか!
441デフォルトの名無しさん
2020/07/29(水) 18:21:34.93ID:TpnjQV/H 第一級函数のことかと思ったよ俺は
馬鹿は1つしかモノを知らないから適当に言っても1つの意味にしかならないが他人はお前よりモノを知ってるから第一級函数なのかラムダ式なのかそれとも自分が知らない別の概念なのか判断できないんだよ
馬鹿は1つしかモノを知らないから適当に言っても1つの意味にしかならないが他人はお前よりモノを知ってるから第一級函数なのかラムダ式なのかそれとも自分が知らない別の概念なのか判断できないんだよ
442デフォルトの名無しさん
2020/07/29(水) 18:32:59.18ID:T5TGNuPi 結局単にラムダ式のことを言おうとしてたん?
それだけのことをなぜ平置きとか言い出しちゃったのかなw
見苦しいからもうこれ以上レスいらんぞ
それだけのことをなぜ平置きとか言い出しちゃったのかなw
見苦しいからもうこれ以上レスいらんぞ
443デフォルトの名無しさん
2020/07/29(水) 18:34:25.78ID:yJ6wpcWu 平置き式のこと?
444デフォルトの名無しさん
2020/07/29(水) 18:35:43.73ID:jnMYxU1A 平置きとかメルカリ用語じゃねーのか
445デフォルトの名無しさん
2020/07/29(水) 18:40:24.30ID:yJ6wpcWu 単体で置ける関数のことを単体関数と言い、それを平置きして式化したものが平置き式
ラムダ式なんて西洋かぶれのバズワードを使わなくても説明できるのができるプログラマ
ラムダ式なんて西洋かぶれのバズワードを使わなくても説明できるのができるプログラマ
446デフォルトの名無しさん
2020/07/29(水) 18:43:48.50ID:T5TGNuPi 必死かコイツ
447デフォルトの名無しさん
2020/07/29(水) 18:59:31.61ID:zMv38iUQ みーっけた!
こうゆう関数併記するスタイルの事じゃないの?
プログラミングのお題スレ 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() {
}
こうゆう関数併記するスタイルの事じゃないの?
プログラミングのお題スレ 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.70ID:bUZt8h4Z それは関数を単体でおいただけ
平置きとは違う
平置きとは違う
449デフォルトの名無しさん
2020/07/29(水) 20:44:56.64ID:f9ldngpW フォルダに平積みする事か?
A.class
B.class
C.class
D.class
E.class
A.class
B.class
C.class
D.class
E.class
450デフォルトの名無しさん
2020/07/29(水) 20:48:45.31ID:kq2jMqPx 本の平積みと同じ意味だよ
平にするって所を強調したいんだ
平にするって所を強調したいんだ
451デフォルトの名無しさん
2020/07/29(水) 23:30:32.60ID:eNj62kDo ポリモーフィズムって押し付けなんだよね
汎用的な機能を提供する
与える引数だけが戻り値を決めるような
純粋な関数を1つくればDRYになっていいものを、
何らかの意図を持った特化した関数を
幾つも定義しなければならない
意味がわからない。
インスタンスには極力状態を持たせない方が
圧倒的にバグが少ない
UI制御の状態ならGUI上だけで
本当に重要な状態ならDB上やセッションとかで
持つくらいで大体は事足りる
クラスのフィールドなんてほとんど使わんよ
引数と戻り値
配列 連想配列をとことん突き詰めれば
大抵の事はなんでも出来る。
これが構造化プログラミング
汎用的な機能を提供する
与える引数だけが戻り値を決めるような
純粋な関数を1つくればDRYになっていいものを、
何らかの意図を持った特化した関数を
幾つも定義しなければならない
意味がわからない。
インスタンスには極力状態を持たせない方が
圧倒的にバグが少ない
UI制御の状態ならGUI上だけで
本当に重要な状態ならDB上やセッションとかで
持つくらいで大体は事足りる
クラスのフィールドなんてほとんど使わんよ
引数と戻り値
配列 連想配列をとことん突き詰めれば
大抵の事はなんでも出来る。
これが構造化プログラミング
452デフォルトの名無しさん
2020/07/29(水) 23:41:24.99ID:JOuph4+C ttps://i.imgur.com/qRx3DMV.gif
453デフォルトの名無しさん
2020/07/30(木) 00:11:51.67ID:3OVhn9K/ >>451
それが設計意図がキチンとドキュメントにまとまっていれば
こうなったときに引数増やすしか無いかとかわかるんだけど
だいたいドキュメント書かないバカがノリで作ったようなポリモだから
頭にくるんだよね
作ったやつのおバカなドヤ顔に拳をブチ込んでその場で正座させながらドキュメント書かせたい
それが設計意図がキチンとドキュメントにまとまっていれば
こうなったときに引数増やすしか無いかとかわかるんだけど
だいたいドキュメント書かないバカがノリで作ったようなポリモだから
頭にくるんだよね
作ったやつのおバカなドヤ顔に拳をブチ込んでその場で正座させながらドキュメント書かせたい
454デフォルトの名無しさん
2020/07/30(木) 08:29:08.61ID:aMAEXQwY >>451
単純にモジュール切り分けテクニックの一つなだけだよ。
変な切り分けすればそりゃ可読性悪くなるわ。
オブジェクト指向をいつでもすべしみたいな馬鹿が誤解をひろめたのがいかんだけで有用なテクニックの一つではある。
単純にモジュール切り分けテクニックの一つなだけだよ。
変な切り分けすればそりゃ可読性悪くなるわ。
オブジェクト指向をいつでもすべしみたいな馬鹿が誤解をひろめたのがいかんだけで有用なテクニックの一つではある。
455デフォルトの名無しさん
2020/07/30(木) 10:11:39.63ID:6431nXoC ドキュメントとセットでの運用なら、
それ自体では完結してない、つまりは欠陥品ってことでしょ
ドキュメントの有無や書いた奴の頭の程度で決定したりはしない
それ自体では完結してない、つまりは欠陥品ってことでしょ
ドキュメントの有無や書いた奴の頭の程度で決定したりはしない
456デフォルトの名無しさん
2020/07/30(木) 10:58:41.66ID:P2gSGZs3 >>455
visualstudioがWordやExcelと連携してくれれば楽なのにね
visualstudioがWordやExcelと連携してくれれば楽なのにね
457デフォルトの名無しさん
2020/07/30(木) 12:33:29.09ID:6431nXoC コードそのものが「文芸的」になる必要がある
458デフォルトの名無しさん
2020/07/30(木) 13:15:44.34ID:XKQCIMIB ソリューションエクスプローラーなんて芋っポイのやめてWordの項目一覧でいいよ
そこの項目に対応したソースを記述すればいい
そこの項目に対応したソースを記述すればいい
459デフォルトの名無しさん
2020/07/30(木) 13:21:46.37ID:odFw/CMl ソリューションエクスプローラのCMakeターゲットビュー見てみろよ。
そんなこと言えなくなるだろ。
そんなこと言えなくなるだろ。
460デフォルトの名無しさん
2020/07/30(木) 13:24:30.25ID:XKQCIMIB ドキュメント主導型にして欲しい
461デフォルトの名無しさん
2020/07/30(木) 13:28:55.06ID:odFw/CMl それはちょっと違うかもしれないな。
プログラミング言語は自然言語と比較して非常に制約がきつく、それは機械が読めるほどだ。
自然言語で書くよりもプログラミング言語で書く方が誤解の余地が少ない優れた文書になるのではないか。
プログラミング言語は自然言語と比較して非常に制約がきつく、それは機械が読めるほどだ。
自然言語で書くよりもプログラミング言語で書く方が誤解の余地が少ない優れた文書になるのではないか。
462デフォルトの名無しさん
2020/07/30(木) 14:36:27.17ID:jRBN85oj data Status = Dead | Alive
you == not Alive
お前はもう死んでいる
you == not Alive
お前はもう死んでいる
463デフォルトの名無しさん
2020/07/31(金) 00:38:15.14ID:91XEAcCM464デフォルトの名無しさん
2020/07/31(金) 00:57:13.70ID:QZ7aSShZ465デフォルトの名無しさん
2020/07/31(金) 01:01:24.69ID:QZ7aSShZ466デフォルトの名無しさん
2020/07/31(金) 07:44:49.12ID:0J+iX777467デフォルトの名無しさん
2020/07/31(金) 09:46:54.45ID:UpUkpE84 プライベートメソッドのドキュメントを作るんだろ?
欠陥品じゃん
欠陥品じゃん
468デフォルトの名無しさん
2020/07/31(金) 12:50:08.54ID:0J+iX777 プライベートだろうとパブリックだろうと、構造がコードでわかりにくけりゃ作るよ。
そういう表面的なことでしか判断できないのは頭が悪い証拠だと思うよ。
そういう表面的なことでしか判断できないのは頭が悪い証拠だと思うよ。
469デフォルトの名無しさん
2020/07/31(金) 13:53:02.12ID:J/Hsbz2N 和田信者は頭が欠陥品
470デフォルトの名無しさん
2020/07/31(金) 15:26:19.59ID:+g+2reUI 要するに馬鹿にはプログラミングさせるなということだな
馬鹿が書くと変なものをprivateにしてしまって大混乱
プライベートメソッドをテストせざるを得なくなる
馬鹿が書くと変なものをprivateにしてしまって大混乱
プライベートメソッドをテストせざるを得なくなる
471デフォルトの名無しさん
2020/07/31(金) 20:54:13.68ID:UpUkpE84 普通は表面的=形式的なモンで判断するんでしょこの業界
だって形式しかねーもん
だって形式しかねーもん
472デフォルトの名無しさん
2020/08/01(土) 01:42:55.39ID:JfG80/LC 構造図みたいなのはプログラム内には書けないから
それは文章化しておくしかないから仕方がない
それは文章化しておくしかないから仕方がない
473デフォルトの名無しさん
2020/08/01(土) 13:40:53.00ID:ZqZOxFea474デフォルトの名無しさん
2020/08/03(月) 01:10:10.92ID:WN+omvah475デフォルトの名無しさん
2020/08/30(日) 15:04:18.01ID:i3Iv6gG3 >>397
>相変わらずオブジェクト指向信じて
>頑張ってるJavaプログラマさん達に
>お伺いしたいんだけどさぁ
ならば「チンポがシコシコする」という日本語表現は、文法的に正しいのか?
チンポ「を」シコシコするのではなくて、チンポ「が」シコシコする。この場合、「チンポ」は主語となる。
オブジェクト指向で言う「集約」は2種類あって、全体(俺)と部分(チンポ)が繋がっている場合と、
全体(俺)と部分(チンポ)が別々になっている場合とが考えられる。けれども「チンポ」はそれ自体
が独立した生き物であり、所有者の意思とは無関係に、勃起して「シコシコする」。
例えば寝てる時にエロい夢みて朝起きてみたらチンコが勃起して射精してたとか。
違うか?
「胸がドキドキする」は良いが、「チンポがシコシコする」はダメな理由を、50字以内で述べろ!
>相変わらずオブジェクト指向信じて
>頑張ってるJavaプログラマさん達に
>お伺いしたいんだけどさぁ
ならば「チンポがシコシコする」という日本語表現は、文法的に正しいのか?
チンポ「を」シコシコするのではなくて、チンポ「が」シコシコする。この場合、「チンポ」は主語となる。
オブジェクト指向で言う「集約」は2種類あって、全体(俺)と部分(チンポ)が繋がっている場合と、
全体(俺)と部分(チンポ)が別々になっている場合とが考えられる。けれども「チンポ」はそれ自体
が独立した生き物であり、所有者の意思とは無関係に、勃起して「シコシコする」。
例えば寝てる時にエロい夢みて朝起きてみたらチンコが勃起して射精してたとか。
違うか?
「胸がドキドキする」は良いが、「チンポがシコシコする」はダメな理由を、50字以内で述べろ!
476デフォルトの名無しさん
2020/11/16(月) 10:13:57.47ID:PECNoX7v >>397
要するに君のスペックや君が手掛けてきたシステムは
オブジェクト指向を検討する程のものじゃなかったし
今後もオブジェクト指向を検討するようなシステムに
君が係ることもなんだろうということは理解できた
要するに君のスペックや君が手掛けてきたシステムは
オブジェクト指向を検討する程のものじゃなかったし
今後もオブジェクト指向を検討するようなシステムに
君が係ることもなんだろうということは理解できた
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【卓球】早田ひな、「総額100万スられた」「ずっと憧れていたスペインとイタリア…」ヨーロッパ旅行で悲劇 スリ被害を告白 [muffin★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 産経新聞「高市早苗の答弁さぁ……思慮が足りてなくね?官僚と詰めずに思いつきで話しているでしょ」 [175344491]
- 【実況】博衣こよりのえちえち歌枠🧪
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【雑談】暇人集会所part18
- 高市早苗「支持者の理解を得られないので台湾発言を撤回できない」 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
