板検索:
テストしにくいコードをテストする方法 その2 (132)
まとめビュー
1
デフォルトの名無しさん[sage]   投稿日:2017/01/03 14:50:44  ID:f6cee8Pv.net(15)
ここで言うテストっていうのは
ユニットテストみたいなものね。

人間がぽちぽち操作してやるテストじゃありません。


前スレ テストしにくいコードをテストする方法教えて下さい
コメント1件


2
デフォルトの名無しさん[sage]   投稿日:2017/01/03 18:00:08  ID:f6cee8Pv.net(15)
例で考えよう。
private function numberOfFeet(動物) returns 脚の数
{
 if (動物 == 人) { return 2 }
 if (動物 == 犬) { return 4 }
 if (動物 == 猫) { return 4 }
 raise exception 知らない動物
}
っていう関数が既にあるとする。

3
デフォルトの名無しさん[sage]   投稿日:2017/01/03 18:00:28  ID:f6cee8Pv.net(15)
その関数で対応する動物がもっと増えたとしよう。

private function numberOfFeet(動物) returns 脚の数
{
 if (動物 == 人) { return 2 }
 if (動物 == 犬) { return 4 }
 if (動物 == 猿) { return 4 }
 if (動物 == キジ) { return 2 }
 if (動物 == 猫) { return 4 }
  :
  :
 raise exception 知らない動物
}

いよいよ複雑になってきた。privateなnumberOfFeetをテストしたい。
となってきたら、設計が悪いって話なんだよ。

そもそもこの関数のテストはどうするか? ↓このようにやるか?
assert( numberOfFeet(人) == 2 )
assert( numberOfFeet(犬) == 4 )
assert( numberOfFeet(猿) == 4 )
 :

あほらしい。これは実行コードの内容を単純に変換してテストコードに転記したにすぎん。
新たに対応する動物が増えたら、それに対応するコードを追加するだけの単純作業
いったいなんの意味があるというのか。
そこ(実行コード)にそう書いてあるんだから関数の実行結果はあきらかではないか。

カバレッジを100%にするためには必要?
それは "設計が悪いから" こうするしかなくなってしまってるんだよ

4
デフォルトの名無しさん[sage]   投稿日:2017/01/03 18:00:58  ID:f6cee8Pv.net(15)
private関数がテストしたいと思ってきたら設計が悪いという話だったね。
この場合は、このprivate function numberOfFeetを
publicにしてテストするのではなくて設計を変えるってことだよ。

もちろんやり方はいくつもある。もっともシンプルな解決方法ではないが
今回はヘルパークラスを作る方法で解決してみようか。

LookupTableクラスというものを作る。
このクラスは特定のキーを元に特定の値を返すクラスだ。
newの引数で対応するキーと値の組み合わせを渡すことができる。

lookup_table = new LookupTable({a: 1, b: 2, c: 3})

さて、このLookupTable・・・のテストを書くとき、
動物が増えたら?などということを考える必要はない。
LookupTableは汎用的なクラスなのだからそこに動物は出てこないからだ。
では使う側はどうなるか?

data = {人: 2, 犬: 4, 猿: 4, キジ: 2, 猫: 4}
numberOfFeet = new LookupTable(data)

こういうコードを書くだろう。
テストはどうする? ・・・答えは "不要" だ。

なぜならばLookupTableのテストはすでに書いているからだ。
おそらくこのコードは別のテストコード時に最低1回は通るだろう。
それでカバレッジは100%になる。いくら動物が増えたとしても
そのdataというデータ定義の行は通るのでカバレッジは100%のままだ。
コメント6件

5
デフォルトの名無しさん[sage]   投稿日:2017/01/03 18:01:14  ID:f6cee8Pv.net(15)
これを手抜きやずるいやり方だと思うか?

元の設計のテストというのはデータが増えれば対応するテストを
増やすだけという単純作業だっただろう?

こんなのそもそもやる意味がない
データが変われば、それに応じて答えは変わる。
それだけのことだろう。

こういうのは、そもそもやらなくていいんだよ。

変数aに1を入れました。これ対応する変数aは1であるか?という
テストコードを書く意味はない。
テストすべき対象は実行するコードであってデータ定義はテストしない。

LookupTableという汎用的なクラスを作ることで実行するコードの中から
データ定義を分離させることで、少ないテストパターンでカバレッジ100%にしながら
テストコードを書くことができる。それが可能な設計に変更したからだ。

ということで、 テストしたくなってしまった
private function numberOfFeetは
悪い設計を正すことで存在が消えました。

ということでおしまい。

6
デフォルトの名無しさん[sage]   投稿日:2017/01/03 18:01:31  ID:f6cee8Pv.net(15)
プログラム設計の善し悪しとテスト技法は密接に関係している。

というかprivate関数をテストする言語特有の裏技的テクニックは
テスト技法ではないんだがな。

プログラム設計が悪いと、テストが難しくなったりできなくなったりする。
private関数のテストもその一つで、private関数がテストしたいほど
複雑になったら、それは設計が悪いということだよ。

こういうのはprivateのまま頑張ってテストするんじゃなくて、
単純にpublicに変えるのでもなくて、
汎用的な処理をヘルパークラスや親クラスとして抽出する

テストしづらい → 設計が悪い → 設計を直す → テストを書く
こういう流れでなくてはいけない。



話は少し変わるが、設計を直すその途中で作成するリファクタリングを
するためだけに用いる一時的なテストコードに名前をつけたいね。

本来であればテストしづらいコードであってもテストコードは
あってしかるべきなんだが、多くの場合悪い設計のコードにテストコードはない。
だから新たにテストコードを追加する。しかしこのテストコードは
リファクタリング後にすぐにメンテナンスして、違う形になる。

だから一時的なテストコードになるんだよね。

7
デフォルトの名無しさん[sage]   投稿日:2017/01/03 18:01:50  ID:f6cee8Pv.net(15)
あ、そうそう

リファクタリングを行うための一時的なテストコードであれば
単純にprivateをpublicに変えたり
private関数のテストコードを書くのもありだから。

このprivate関数へのテストはリファクタリングをしたあとの
テストコードのメンテナンスでなくなるという前提であれば
一時的にprivate関数へのテストコードを書くのはあり。

8
デフォルトの名無しさん[sage]   投稿日:2017/01/03 18:02:53  ID:f6cee8Pv.net(15)
https://github.com/google/googletest/blob/master/googletest/docs...#testing-private-code

Testing Private Code

If you change your software's internal implementation,
your tests should not break as long as the change is not observable by users.
Therefore, per the black-box testing principle, most of the time you should test your code through its public interfaces.

If you still find yourself needing to test internal implementation code, consider
if there's a better design that wouldn't require you to do so. If you absolutely
have to test non-public interface code though, you can.

プライベートコードのテスト

あなたのソフトウェアの内部実装を変更した場合、変更がユーザによって観察されない限り、
テストは中断されるべきではありません。 したがって、ブラックボックスのテストの原則に従って、
ほとんどの場合、パブリックインターフェイスを使用してコードをテストする必要があります。

依然として内部実装コードをテストする必要がある場合は、そうする必要のない
優れた設計があるかどうかを検討してください。 しかし、非公開のインターフェイスコードを
絶対にテストしなければならない場合は、できます。

9
デフォルトの名無しさん[sage]   投稿日:2017/01/03 18:03:14  ID:f6cee8Pv.net(15)
「privateだからテストしてはいけない」という意見はそもそも的外れで
テストすべきものがprivateという状態ができたら
それは設計がおかしいと気づかないといけない。

「privateだからテストしてはいけない」は単なる思考停止で
privateをテストしたいのは設計がまずいからだね、設計をなおそう。
という流れにならなければいけない。
コメント1件

10
デフォルトの名無しさん[sage]   投稿日:2017/01/03 18:03:37  ID:f6cee8Pv.net(15)
http://higelog.brassworks.jp/1941

テストコードにもリファクタリングが必要

・昔はテストコードがメンテ対象であるという意識が薄かった
・見てすぐ分かるテストコードがよいという考えからコピペコードが非常に多かった
・テストコードがたくさんあることによって動きが取りづらくなり、変更コストも上がる
・素早く動きたいがためにTDDしているのにそんな皮肉な結果になってしまう
・たくさん書くのではなく必要十分書くことが大切
・書き散らすと「テストケース爆発」を起こす
・テストコードもメンテし続けるためにリファクタリングして行く必要がある

11
デフォルトの名無しさん[sage]   投稿日:2017/01/03 18:04:15  ID:f6cee8Pv.net(15)
http://dev.classmethod.jp/testing/10_errors_about_unit_testing/
> 3.テスト対象が完璧な設計であるという勘違い
>
> ユニットテストを実践することによりプロダクションコードが
> 適切に修正されていく状態でなければなりません。
>
> ユニットテストの重要な目的のひとつに「テスト対象クラスやメソッドの
> 使用感を把握する」ことがあります。机上の設計やフィーリングだけで
> 書いたコードは、使ってみての違和感や使いにくさに気付き難いものです。
> それらの使用感は、実際に利用してみてはじめて気付きます。
> だから、テストコードを書くことで実際に利用してみます。これはサンプルコードを書く事に他なりません。
>
> サンプルコードを書くと、「これは使いにくい」と感じたり、
> 「これはこうした方が使いやすい」と感じたりします。それはユニットテストの
> 大きな効果です。もし、使いにくいと感じたならば、すぐにテスト対象を修正します。
> テスト対象が完璧な設計で変更する余地が全く無い、または変更し


12
デフォルトの名無しさん[sage]   投稿日:2017/01/03 18:04:36  ID:f6cee8Pv.net(15)
これも関連する話。まずリファクタリング後にテストを変更するのは当然

まず対象のクラスに対してテストを書く。そしてリファクタリングをする。
この時、汎用的な処理をヘルパークラスや親クラスとして抽出する。

ここまででテストを変更することはないが、
次に対象のクラスにあったテストのうち、ヘルパークラスや親クラスに分離したものは、
対象のクラスのテストではなくて、ヘルパークラスや親クラスのテストとして移動する

ヘルパークラスや親クラスでテストしている内容を、
それを使用している対象クラスでもやる必要はない。

具体的に言うと、あるモデル、例えばUserモデルクラスにsaveメソッドを作ったのであれば
そのsaveメソッドのテストを書くのは当然だが、そのsaveメソッドが親クラス
(例えばRailsで言えばActiveRecord::Baseクラス)にあるものならば、
Userモデルクラスでsaveメソッドのテストをする必要はない。


こうやってヘルパークラスや親クラスに処理を移動して、それに対するテストを書くことで
それを使用している部分ではテストが不要という状態を作り上げることが重要

13
デフォルトの名無しさん[sage]   投稿日:2017/01/03 18:05:03  ID:f6cee8Pv.net(15)
privateメソッドに対してテストをしたくなっったら
それはクラスが肥大化してる証拠だよ。

まず前提としてprivateメソッドなんてものは
ほとんど必要ありません。

長い処理があったとして、その中で汎用的な処理を
抜き出していったら、コードは短くなります。
短いのだからprivateな関数にするまでもありません。

それでもprivateメソッドが残ったとしたら
それはヘルパーメソッドとして別クラスに分離する。
別クラスの関数を呼ぶのだから、必然的にそのメソッドはpublicになる
そうすりゃそのメソッドだけでテストかけるだろう?

privateメソッドをテストしたいっていうのは、作り方が悪いんだよ。
コメント2件

14
デフォルトの名無しさん[sage]   投稿日:2017/01/03 18:06:10  ID:f6cee8Pv.net(15)
ある程度埋めないと落ちるといわれたので、
前スレのハイライト(笑)をコピペ

15
デフォルトの名無しさん[sage]   投稿日:2017/01/03 18:45:05  ID:mYtDE+67.net
なめてんの?

16
デフォルトの名無しさん[]   投稿日:2017/01/03 19:23:41  ID:Oj8nbLhF.net
>13
>privateメソッドをテストしたいっていうのは、作り方が悪いんだよ。

バカ丸出し。
privateメソッドだからといって十分にunit testingしない奴は頭が悪いんだよw
privateメソッドがあるからといって設計のせいにするのは性格が歪んでんだよw
privateメソッドをテストする技術を持たないからといって
出鱈目な ”あるべき論” を捏造する奴は技術者としての道徳が欠如してるんだよw
コメント1件

17
デフォルトの名無しさん[sage]   投稿日:2017/01/03 22:27:14  ID:f6cee8Pv.net(15)
>16
お前日本語がわかってないなw

18
デフォルトの名無しさん[sage]   投稿日:2017/01/04 09:28:49  ID:cRY9oGv2.net
privateメソッドとテストに相関はありません
リファクタリングのスレに移動してください

19
デフォルトの名無しさん[sage]   投稿日:2017/01/04 14:06:42  ID:mEkZwZd0.net(2)
>13
馬鹿丸出し
頭固すぎ

20
デフォルトの名無しさん[sage]   投稿日:2017/01/04 14:10:32  ID:mEkZwZd0.net(2)
>9
> テストすべきものがprivateという状態ができたら
> それは設計がおかしいと気づかないといけない。
という思考停止にきづかない馬鹿pgr

21
デフォルトの名無しさん[sage]   投稿日:2017/01/05 04:41:00  ID:4wDE4Xcp.net
当のKentは ID:f6cee8Pv みたいな教条主義とは対極にいるんだがな。
コメント1件

22
デフォルトの名無しさん[sage]   投稿日:2017/01/05 07:46:32  ID:SvuiXrcs.net(2)
>21
どこが?
https://twitter.com/kentbeck/status/3579860805

2chのレスだけで知ったかぶってる、まさに半可通
この手のクズは他分野でも同様なのだろうが、
本も読まず、手も動かせない人間なんて、
職人気質なTDD実行側の人間が、一番嫌うタイプだぞ
コメント1件

23
デフォルトの名無しさん[sage]   投稿日:2017/01/05 07:59:15  ID:SvuiXrcs.net(2)
むしろつまみ食いしかしてないくせに、拡大解釈して腐ったコード撒き散らすな
ケントベックはXPは熟練者が必要とは言ってるだけで、手法は何でも良いなんて言ってない
テストコードも、trivialな物は不要、複雑なprivateメソッドは設計が悪いと一蹴してる
これを教条主義だと言うなら、レッテル張る事しかできない屑だな
コメント1件

24
デフォルトの名無しさん[]   投稿日:2017/01/05 08:26:33  ID:rS/TqFdr.net
前スレでprivateメンバーしか見ずにそれをテストしようとしたり、考え方がおかしい。

あと、Kent Beckはテストは不要だと思ったらやらない、と言うぐらい柔軟な思考の持ち主だぞ

25
デフォルトの名無しさん[sage]   投稿日:2017/01/05 09:16:09  ID:qUpJhZLr.net
前スレ埋めてからやってくれ。

26
デフォルトの名無しさん[sage]   投稿日:2017/01/06 14:09:56  ID:jUueQ44/.net(3)
>23
> 複雑なprivateメソッドは設計が悪いと一蹴してる
ソースは?

>22のtweetがそれだとしたら、その会話の流れが設計の善し悪しであることを示す他のtweetも示せ
コメント1件

27
デフォルトの名無しさん[sage]   投稿日:2017/01/06 14:31:04  ID:jUueQ44/.net(3)
Kent BeckはImplementation Patternsの中でこう言ってる

* Inner Class
* Bundle locally useful code in a private class.

* Method Visibility
* Make methods as private as possible.

* Helper Method
* Create small,private methods to express the main computation more succinctly.

別に、private classやprivate methodを否定しているわけではない
コメント2件

28
デフォルトの名無しさん[]   投稿日:2017/01/06 15:00:59  ID:ueXke68e.net
公開する必要のないprivateメンバーをpublicにしてまでテストするなんて真逆の発想なんだよなぁ
コメント1件

29
デフォルトの名無しさん[sage]   投稿日:2017/01/06 15:23:30  ID:jUueQ44/.net(3)
>28
まあ、そのprivateメソッドが、所属するクラスと直交していて再利用可能な内容だった場合は
別クラスにpublicメソッドとして切りだすのもいいけど、いつでもそうとは限らないからな

30
デフォルトの名無しさん[sage]   投稿日:2017/01/06 16:24:11  ID:bv2F1pCR.net

31
デフォルトの名無しさん[sage]   投稿日:2017/01/06 19:55:59  ID:SxMvRiz3.net
飽きてきたので以降privateの話題禁止

32
デフォルトの名無しさん[sage]   投稿日:2017/01/06 21:44:03  ID:IT5nhYwQ.net(2)
>27
レスをよく読め文盲め
言ってもいない事を言ったかのように叩くやつがあるか

33
デフォルトの名無しさん[sage]   投稿日:2017/01/06 21:44:44  ID:IT5nhYwQ.net(2)
>26
勝手に追えばいいだろ
くだらない人種だな

34
デフォルトの名無しさん[sage]   投稿日:2017/01/07 01:43:02  ID:jcRWOLCk.net(2)
結局世界的有名人であるKent Beckが言ってることは
>1がまとめたとおり。

privateメソッドをテストしようと思った時点で、
そのprivateメソッドは設計が悪いということ。

悪い設計を直す過程でpublicになる。
設計を直さなないで単にpublicに変更するのは間違い。
コメント1件

35
デフォルトの名無しさん[sage]   投稿日:2017/01/07 07:12:47  ID:0cNXAmIk.net
>34
まだそんなこと言ってんの?ばかだなあw
コメント1件

36
デフォルトの名無しさん[sage]   投稿日:2017/01/07 07:22:58  ID:55rirhTJ.net
そこで#define private publicですよ。え?

37
デフォルトの名無しさん[sage]   投稿日:2017/01/07 08:54:35  ID:bP0cwlRr.net
publicメソッドしかテストできない道具を使ってprivateメソッドをテストすることはできない。
一種のトートロジーだな。

38
デフォルトの名無しさん[sage]   投稿日:2017/01/07 12:20:08  ID:HNCUhS1Q.net
前スレ埋めてからやれ
こういう奴らが糞コードを放りっぱなしにしていってこっちが掃除しなくちゃならなくなるんだよ
バグ解析依頼されて見てみたら、意識だけ高いけどそのまま放置されたゾンビコードに当たったときの腹立たしさって
まあお前らのおかげでちょっといい飯が食えるんだから感謝しないといけないな

39
デフォルトの名無しさん[sage]   投稿日:2017/01/07 13:20:41  ID:jcRWOLCk.net(2)
>35
悔しいなら反論しろよw

40
デフォルトの名無しさん[sage]   投稿日:2017/01/07 19:21:41  ID:adAq7wbq.net
今現在を占う 2017/1/7 19:21

おみくじ 大吉 →  ♌ 獅子座
.      吉   →  ♈ 牡羊座 ♋ 蟹座   ♓ 魚座 
.      中吉 →  ♏ 蠍座 
.      小吉 →  ♉ 牡牛座 ♍ 乙女座 ♎ 天秤座 ♒ 水瓶座
.      末吉 →  ♊ 双子座
.      凶   →  ♐ 射手座
.      大凶 →  ♑ 山羊座

41
デフォルトの名無しさん[sage]   投稿日:2017/01/08 09:54:40  ID:qkk6ZrX+.net(2)
吉だぜ、いやっほーい

42
デフォルトの名無しさん[sage]   投稿日:2017/01/08 09:54:57  ID:qkk6ZrX+.net(2)
あ、昨日か.....

43
デフォルトの名無しさん[sage]   投稿日:2017/01/09 20:16:25  ID:pl8AdjB2.net
今現在を占う  2017/1/9 20:16  (不定期テスト)

おみくじ 大吉 →  ♍ 乙女座 ♑ 山羊座
.      吉   →  ♉ 牡牛座 ♎ 天秤座 ♒ 水瓶座
.      中吉 →  ♋ 蟹座 
.      小吉 →  ♈ 牡羊座 ♏ 蠍座 
.      末吉 →  ♌ 獅子座
.      凶   →  ♊ 双子座 ♐ 射手座
.      大凶 →  ♓ 魚座 

44
デフォルトの名無しさん[sage]   投稿日:2017/01/11 00:09:48  ID:ha9kcMkV.net
あんまり可視性でグダグダ言っても揉め事しか起こらん印象は有る。
だからあんまりカプセル化周りの議論は好きではない。
重要なのはテストするコードの粒度じゃないかね。
3 のレベルのコードをテストするのは粒度が細かすぎる。
3のコードを呼んで何かしてるコードのテストコードを書くべきなんだろう。
コメント1件

45
デフォルトの名無しさん[sage]   投稿日:2017/01/11 23:15:37  ID:1SbN3a75.net(2)
端折って網羅性が確保できなくなるのであればそもそもこのテスト自体イラネーってのあるよ
だからやるなら機械的に全部やるかそもそもやらないかのどっちかになると思う

46
デフォルトの名無しさん[sage]   投稿日:2017/01/11 23:16:53  ID:1SbN3a75.net(2)
あ、Visual Studioのユニットテスト的な話ね
コメント1件

47
デフォルトの名無しさん[sage]   投稿日:2017/01/12 00:02:44  ID:qhQd7W/g.net
>46
2017のlive unit testのことを言ってる?

48
デフォルトの名無しさん[sage]   投稿日:2017/01/13 06:48:56  ID:tNTQooLV.net
>44
しょうがないよ、ID:f6cee8Pvの能力ではそこが限界・・・
コメント2件

49
デフォルトの名無しさん[sage]   投稿日:2017/01/13 23:07:22  ID:9L2JHio8.net
>48
呼んだか?

何か言いたいことがあるなら言ってみな。

今のところ俺の書き込みに論理的に反論している
文章は存在していない。
コメント1件

50
デフォルトの名無しさん[sage]   投稿日:2017/01/13 23:40:30  ID:2oF12qKz.net
テスト
○○○●○○○○○○○○●○○○○○○○○●
○○○●○○○○○○○○●○○○○○●●●●●●●
○○○●○○○○○●●●●●●●○○●○○○○○●
○●○●○●○○○○●○○○●○○○○●●●●●○
○●○●○●○○○○●○○○●○○○○○○○●○○
○●○●○○●○○○○●○●○○○○○○○●○○○
○●○●○○●○○○○●○●○○○○●●●●●●●
●○○●○○●○○○○○●○○○○○○○○●
○○○●○○○○○○○●○●○○○○○○○●
○○○●○○○○○○●○○○●○○○○○○●
○○●●○○○○○●○○○○○●○○○○●●

○○○○○○○●○○○○○○○○○○○○○○○○●○○○○○○○○○○○○○○○○●
○○○○○○○●○○○○○○○○○○○○○○○○●○○○○○○○○○○●●●●●●●●●●●●●●
○○○○○○○●○○○○○○○○○●●●●●●●●●●●●●●●●○○●○○○○○○○○○○○○●
○○○○○○○●○○○○○○○○○○○○○●○○○○○○●○○○○○○●○○○○○○○○○○○○●
●●●●●●●●●●●●●●●●○○○○○●○○○○○○●○○○○○○○○●●●●●●●●●●
○○○○○○○●○○○○○○○○○○○○○●●○○○○●●○○○○○○○○○○○○○○○●●
○○○○○○●●●○○○○○○○○○○○○○●○○○○●○○○○○○○○○○○○○○○●●
○○○○○○●○●○○○○○○○○○○○○○●●○○●●○○○○○○○○○○○○○●●
○○○○○○●○●●○○○○○○○○○○○○○●○●●○○○○○○○●●●●●●●●●●●●●●●●
○○○○○●●○○●○○○○○○○○○○○○○○●●○○○○○○○○○○○○○○○●
○○○○○●○○○●●○○○○○○○○○○○○●●●●○○○○○○○○○○○○○○●
○○○○●●○○○○●●○○○○○○○○○○●●○○●●○○○○○○○○○○○○○●
○○○●●○○○○○○●●○○○○○○○○●●○○○○●●○○○○○○○○○○○○●
○○●●○○○○○○○○●●○○○○○●●●○○○○○○●●●○○○○○○○○○○●
●●●○○○○○○○○○○●●●○●●●○○○○○○○○○○●●●○○○○○○●●●


51
デフォルトの名無しさん[sage]   投稿日:2017/01/16 23:19:44  ID:9FmOEppL.net
>48
お前ってプログラムに限らずいつも的はずれな難癖しかつけないよな

52
デフォルトの名無しさん[sage]   投稿日:2017/01/21 00:48:16  ID:EhyrNbEj.net(4)
>49
>27に論理的な反証があるだろw
ほんとに頭悪いのな
Kentの書いてる英語のとこだけ読み直してお前自身の矛盾に気がつけないの?
コメント2件

53
デフォルトの名無しさん[]   投稿日:2017/01/21 06:46:40  ID:gnjAlXGF.net(8)
>52
前スレでもそうだったけど、彼は都合の悪いレスは目に入らない人だから何言っても無駄

54
デフォルトの名無しさん[sage]   投稿日:2017/01/21 13:01:41  ID:sMDuy5hJ.net(13)
>52
それのどこが論理的な反証?

今の話はprivateメソッドのテストの話で、
privateメソッドが良いかダメかの話はしてない

Kent Beckのどこにprivateメソッドの話が書いてあるんだ?

55
デフォルトの名無しさん[sage]   投稿日:2017/01/21 13:28:19  ID:zMOHiEOd.net
くすくす…

56
デフォルトの名無しさん[sage]   投稿日:2017/01/21 13:47:45  ID:EhyrNbEj.net(4)
残念な頭だな

57
デフォルトの名無しさん[sage]   投稿日:2017/01/21 13:58:00  ID:sMDuy5hJ.net(13)
反論お待ちしてまーすw

58
デフォルトの名無しさん[sage]   投稿日:2017/01/21 14:03:40  ID:EhyrNbEj.net(4)
Kentの引用読んでも矛盾に気づけない残念さ
ひとりだけ斜め上
コメント1件

59
デフォルトの名無しさん[sage]   投稿日:2017/01/21 14:04:25  ID:sMDuy5hJ.net(13)
時間が相手勘違いされかねんから俺の意見を書いておくか

まずprivateメソッドはpublicメソッドを通してテストするもの
(この時点でprivateメソッドの存在は否定してない)

もしprivateメソッド単体でテストしたいと思ったら
それは設計がまずいということ、設計を見直したら自然にpublicになる。
(privateをpublicに変えるだけではない。それは設計変わっていない)

そうすればpublicメソッドをテストすれば良くなる。
コメント1件

60
デフォルトの名無しさん[sage]   投稿日:2017/01/21 14:04:58  ID:sMDuy5hJ.net(13)
>58
俺の意見とどう矛盾するのか言ってみな

61
デフォルトの名無しさん[sage]   投稿日:2017/01/21 14:05:54  ID:EhyrNbEj.net(4)
脳が単純だから単純な考え方に縋っちゃうんだろうね
それがたたって物事を複雑にする

62
デフォルトの名無しさん[sage]   投稿日:2017/01/21 14:07:22  ID:sMDuy5hJ.net(13)
脳が単純だとprivateメソッドのテストコードの話をしていたのに
privateメソッドを作っていいかどうかの話に
単純化(笑)されるんだろうね。

63
デフォルトの名無しさん[sage]   投稿日:2017/01/21 17:46:46  ID:O/GZ8TN6.net
クラス自体がウンコ

最近そう思うようになった

64
デフォルトの名無しさん[sage]   投稿日:2017/01/21 19:28:01  ID:ij3ZsOnR.net(3)
xUnitが定番になる以前はビルトインテストも珍しくなかったわな。
つか、他人の作ったテストフレームワークを使うのが当たり前になる前はビルトインテストの方が多かったくらい。

ID:sMDuy5hJ は「製品コードにテストコードが混在するのは良くない設計だ」とでも言うだろうか。
コメント1件

65
デフォルトの名無しさん[sage]   投稿日:2017/01/21 20:08:55  ID:sMDuy5hJ.net(13)
>64
なんか罠張ってますぜって臭いがプンプンするなw
俺からなんて言葉を引き出したいのさ?

> 「製品コードにテストコードが
まず前提として「製品コード」という物の話をしてからだよな。
世の中にはソフトウェアに限らず、不具合がたくさんある不良製品もたくさんある。
テストコードが混在するか否かに関係なく
「(不良)製品コードは良くない設計だ」と言うよ。当然だろう?

それから昔のハードディスクはよく壊れたものだが、今壊れにくくなってるのは
製品を改良したからだ。より良い設計に変えた、逆に言えば昔のやり方は設計が今より悪かった。
これも言うまでもない話だよな。

それとテストコードとはなんぞやの話もしないといけない。
今話しをしてるテストコードとうのは製品で必要ないものであって
故障の場合に障害を調べる調査用端子や自己チェック機能はテストコードではない。
そういう機能をもたせるという仕様があって、その仕様を満たすためにテストコードが存在するだろう。

で、ここまでがお前の罠に引っかからないようにするための話な。

> 「(優れた)製品コードにテストコードが混在するのは良くない設計だ」とでも言うだろうか。
あぁ、そのとおりだ。何か言いたいことがあるならどうぞ

66
デフォルトの名無しさん[]   投稿日:2017/01/21 21:01:47  ID:gnjAlXGF.net(8)
sqliteみたいな例外はあるけど一般的にはそこまで書かない、全てのコードに対してsqlite並みにテストコード書いてたらプロジェクト終わらんよな
コメント1件

67
デフォルトの名無しさん[sage]   投稿日:2017/01/21 21:22:40  ID:ij3ZsOnR.net(3)
>> 「(優れた)製品コードにテストコードが混在するのは良くない設計だ」とでも言うだろうか。
>あぁ、そのとおりだ。何か言いたいことがあるならどうぞ

俺は、テストコードが混在するかどうかが設計の良し悪しに関係するとは思わんが、
問題はこんな単純なことですら「良い設計」の定義が一致しないということ。

そのへん曖昧なまま「privateメソッドをテストしようとするのは設計が悪い」と主張しても、
証明になってないという突っ込みする奴はいるかもしれないが、それ以上反論は
しようがないわな。
コメント1件

68
デフォルトの名無しさん[sage]   投稿日:2017/01/21 22:36:34  ID:sMDuy5hJ.net(13)
>66
> sqliteみたいな例外はあるけど一般的にはそこまで書かない、全てのコードに対してsqlite並みにテストコード書いてたらプロジェクト終わらんよな

だから十分にテストされているライブラリやフレームワークを使い。
なるべくコードを書かないようにするのが良いぞ

自分のプロジェクト専用の処理は、自分でテストするしか無い。
しかし、その中で汎用の処理を見つけ出して、そこを外出することで
自分がテストする量を減らすことができる。

そうやってきたら、俺はpublic関数で10行前後、
private関数なんか更に短くなってしまって。

だから言うんだprivate関数をテストしたいと思ったら
設計が悪いだけだってこと。
コメント4件

69
デフォルトの名無しさん[]   投稿日:2017/01/21 22:37:51  ID:gnjAlXGF.net(8)
>68
それは汎用ライブラリーを作らない人の立場での話だな。
コメント1件

70
デフォルトの名無しさん[sage]   投稿日:2017/01/21 22:40:50  ID:sMDuy5hJ.net(13)
>67
> 問題はこんな単純なことですら「良い設計」の定義が一致しないということ。

俺は良い設計の定義の話なんかしてないんだが?

お前が思い込んでるんじゃないか。
「世の中に出ている製品」=「良い設計」だと
お前はそう言いたいんだろう?

俺が言ったのは「製品コードだからって良い設計ということにはならない」と
言うこととと「悪い設計」の話だけなんだがちゃんと理解できてないのか?
そういやprivate関数をテストしたくなったらそれは「悪い設計」とも言ったな。
コメント1件

71
デフォルトの名無しさん[sage]   投稿日:2017/01/21 22:41:52  ID:sMDuy5hJ.net(13)
>69
> それは汎用ライブラリーを作らない人の立場での話だな。

汎用ライブラリを作る人の立場の君に聞きたい。
世の中でよく使われている汎用ライブラリで
sqlite並みにテストコードを書いてないライブラリはどれだ?
コメント1件

72
デフォルトの名無しさん[]   投稿日:2017/01/21 22:55:22  ID:gnjAlXGF.net(8)
>71
一杯あるとおもうけど、それを聞いてどうすんだ?
コメント1件

73
デフォルトの名無しさん[sage]   投稿日:2017/01/21 23:08:11  ID:sMDuy5hJ.net(13)
>72
どうするんだと言われてもね。

よくテストされてる汎用ライブラリを使いましょうという
当たり前のことしか言わないよ。

74
デフォルトの名無しさん[]   投稿日:2017/01/21 23:12:54  ID:gnjAlXGF.net(8)
えっ、話を逸らしただけ?
コメント1件

75
デフォルトの名無しさん[sage]   投稿日:2017/01/21 23:16:13  ID:sMDuy5hJ.net(13)
>74
話をそらしたのはお前じゃね?
俺は>68でちゃんと会話をしている。

それに対するお前のレスは中身が何もない。
中身が何もないお前にこれ以上何をいえと?

俺は話を>68に戻しただけ。
わからないならここに>68の内容を
コピペしてやっても良いんだぜ?
コメント1件

76
デフォルトの名無しさん[]   投稿日:2017/01/21 23:21:02  ID:gnjAlXGF.net(8)
>75
ああ、そういうことか、sqliteがどんなテストコード書いてるか見たらprivateをpublicにするとか言えないと思うんだけど、すまんねその前提で言ってたわ

77
デフォルトの名無しさん[sage]   投稿日:2017/01/21 23:23:43  ID:sMDuy5hJ.net(13)
みんなsqliteのテストコード見なくていいぞw
どうせこいつが言ってるだけのことだから。

78
デフォルトの名無しさん[]   投稿日:2017/01/21 23:36:56  ID:gnjAlXGF.net(8)
まあ見なくて良いよ。普通のプロジェクトにとっては間違いなく過剰だから。
本体のソースコードの行数が122.9Kのところテストのコードとスクリプト含めて91596.1Kらしいから。
ちなみに内部でassertも大量に書いてる。

79
デフォルトの名無しさん[sage]   投稿日:2017/01/21 23:41:58  ID:sMDuy5hJ.net(13)
それが今までの話、
privateメソッドをテストしたくなったら
設計が悪いって話と何の関係があるのかな?

80
デフォルトの名無しさん[sage]   投稿日:2017/01/21 23:43:42  ID:ij3ZsOnR.net(3)
>70

だから、定義してないから真偽定まらんと言ってるのだが。

>59の主張を要約するとこうだな。

1. privateメソッドをテストしようと思ったら設計が良くない
2. テストできるようにするには2種類の方法がある
 a. 設計を見直してpublicにする
 b. 設計を見直さずにpublicにする
3. bではなくaにすべき

1.や3.に反論しようと思ったら設計が良い/まずいの定義に踏み込まざるを得ない。
コメント1件

81
デフォルトの名無しさん[]   投稿日:2017/01/21 23:59:42  ID:gnjAlXGF.net(8)
他人に使われるものを作ってるんだったら必要ないものまでpublicにする(外部に公開する)のは良くないよ。
なのでaもbもどっちもダメ
コメント1件

82
デフォルトの名無しさん[sage]   投稿日:2017/01/22 01:41:32  ID:etjPL+qg.net(3)
>81
他人ってどういう意味?
その文脈で何故他人が出てくるの?

もしかしてpublicメソッドの話をしているのに、
一般用語のパブリック(大衆の、公共の、公衆の)と間違えちゃった?
だとしたら恥ずかしいね。
コメント1件

83
デフォルトの名無しさん[]   投稿日:2017/01/22 04:45:25  ID:77/TNfJH.net
>82
何故他人が出てきたらいけないの?
あなたは自分しか使わないものしか作らないの?
コメント1件

84
デフォルトの名無しさん[sage]   投稿日:2017/01/22 05:34:13  ID:etjPL+qg.net(3)
>83
もしかして図星だった?
質問にちゃんと答えようね

もしかしてpublicメソッドの話をしているのに、
人間に対して使う用語ののパブリック(大衆の、公共の、公衆の)と間違えちゃった?
コメント1件

85
デフォルトの名無しさん[sage]   投稿日:2017/01/22 05:37:05  ID:bK3k81d3.net
>80
publicにしなくてもテストできるやろ

86
デフォルトの名無しさん[]   投稿日:2017/01/22 07:00:17  ID:gigvK4EO.net(3)
>84
いや、間違えてないけど?

87
デフォルトの名無しさん[]   投稿日:2017/01/22 07:12:24  ID:gigvK4EO.net(3)
逆に聞きたいんだが、使う人を考えてクラス設計するのがそんなに不自然か?
意味不明な解釈してると決め付けるぐらいに

88
デフォルトの名無しさん[sage]   投稿日:2017/01/22 07:13:16  ID:etjPL+qg.net(3)
じゃあ自分しか使わないものは
全部privateにするわけね。

自分っていうのは人間の話ね。
コメント1件

89
デフォルトの名無しさん[]   投稿日:2017/01/22 07:17:40  ID:gigvK4EO.net(3)
>88
自分しかつかわないなら好きにすればいいんじゃない?それこそ全部publicでも誰も文句言わない

90
デフォルトの名無しさん[sage]   投稿日:2017/01/24 12:54:18  ID:QA0ZcG3O.net
自分しか使わないからprivateって、なんてクソな設計なんだろうw

91
デフォルトの名無しさん[sage]   投稿日:2017/01/24 20:35:15  ID:dMWZcDP0.net
むかしオブジェクト指向システムの設計ってスレで
将棋の例を出して暴れてたやつにそっくりだなw

92
デフォルトの名無しさん[sage]   投稿日:2017/01/24 21:30:19  ID:8U3NWpZ6.net
むしろ自分しか使わないならpublicでええやん

93
デフォルトの名無しさん[]   投稿日:2017/02/06 23:15:46  ID:Z4T16Vvy.net
設計的な公開/非公開はpublic/privateで分ける
人に対しての公開/非公開はスコープで分ける
コメント1件

94
デフォルトの名無しさん[sage]   投稿日:2017/02/07 08:52:53  ID:SRenyBWg.net
>93
それって逆でもいいんじゃね?

95
デフォルトの名無しさん[sage]   投稿日:2017/02/07 08:59:32  ID:ppv+uzEt.net
開発者が俺とお前の2人ならそれでも良いかもな

96
デフォルトの名無しさん[sage]   投稿日:2017/02/08 01:47:58  ID:oZ8qLhDf.net(2)
>4

どれ、宿題を出しといてやるよ

動物が「バカ」だったときには「4」を返す
という仕様を実装漏れしていました。
なぜ漏れていることに気づけなかったんでしょうか?

あなたの実装漏れを知った顧客は、あなたの報告するカバレッジが100%であることに何の意味もないことを知り、あなたの報告に疑いを持つようになりました(ちゃんちゃん)
コメント1件

97
デフォルトの名無しさん[sage]   投稿日:2017/02/08 03:00:48  ID:nBuIwUQ3.net(2)
>4じゃないけどさ
カバレッジ100%にしても実装漏れは検出できないって当たり前でしょ…
コメント1件

98
デフォルトの名無しさん[sage]   投稿日:2017/02/08 03:33:50  ID:EqksEKaR.net(3)
>96
じゃあお前への宿題な

他の自動車に後ろから追突されたときはエアバッグは意味が無いことを知りました。
エアバッグによる安全性に意味が無いことを知り、あなたは安全装置をすべて外しました
そしてあなたはエアバッグで助かる事故で死にました(ちゃんちゃん)
コメント1件

99
デフォルトの名無しさん[sage]   投稿日:2017/02/08 03:38:50  ID:EqksEKaR.net(3)
馬鹿・・・カバレッジが100%ということはバグがないということだ
普通・・・カバレッジが100%ということはすべての行を実行する程度のテストはしているということだ。


馬鹿は銀の弾丸があると思っている。
馬鹿はカバレッジを完璧じゃないと言おうとしているつもりが
実は馬鹿のほうこそが過大評価している。

自分の間違った考え(カバレッジ100%は完璧)を自分でそれは間違いだって
ツッコミを入れているだけである。マッチポンプ
コメント1件

100
デフォルトの名無しさん[sage]   投稿日:2017/02/08 03:39:18  ID:nBuIwUQ3.net(2)
出題しろよ

101
デフォルトの名無しさん[sage]   投稿日:2017/02/08 04:48:48  ID:q7Bk+Pyw.net
たかがC0のカバレッジ100%を特別なことだと思ってるバカって、>4のことだよな?

102
デフォルトの名無しさん[sage]   投稿日:2017/02/08 07:54:35  ID:oZ8qLhDf.net(2)
>98
>99

なんだ。答えられないのか。おまえクビなw

103
デフォルトの名無しさん[sage]   投稿日:2017/02/08 08:23:37  ID:J/owSyuZ.net
>4の話でLookupTableクラスを分離するというのが「良い設計変更」だとして、じゃあそれを
使用するクラスの内部クラスにしたらその設計は良いままなのか、あるいは悪くなった
ことになるのか、って疑問はあるな。

104
デフォルトの名無しさん[]   投稿日:2017/02/08 09:34:33  ID:3ajnzt+4.net
>97
動物が増えてもテスト不要と言っちゃってる >4 に言えよ

105
デフォルトの名無しさん[sage]   投稿日:2017/02/08 10:58:26  ID:WP/XTf2I.net
>4
> 動物が増えたら?などということを考える必要はない。
はたして、そうだろうか

> data = {人: 2, 犬: 4, 猿: 4, キジ: 2, 猫: 4}
"馬: 3"の追加が必要なのに、それを忘れていた場合にどうするんでしょうね

> テストはどうする? ・・・答えは "不要" だ。
残念、追加し忘れを見逃しましたね

> 元の設計のテストというのはデータが増えれば対応するテストを
> 増やすだけという単純作業
をやってれば、バグを検出できたのに

> なぜならばLookupTableのテストはすでに書いているからだ。
LootupTableのテストは書いていても、data定義(初期化)行はテストできてないね
コメント1件

106
デフォルトの名無しさん[sage]   投稿日:2017/02/08 22:49:03  ID:EqksEKaR.net(3)
>105

> をやってれば、バグを検出できたのに
残念。それを忘れたらバグは検出できませんね
コメント3件

107
デフォルトの名無しさん[sage]   投稿日:2017/02/08 23:29:11  ID:b6dR+iVQ.net
くだらないこと言ってないでコード書けってよく言われてるんだろうな。

108
デフォルトの名無しさん[]   投稿日:2017/02/09 00:22:21  ID:lnTHGhne.net
>106
この場合は忘れてもカバレッジが教えてくれるだけマシだったんじゃない?コードの見やすさは知らんけど

109
デフォルトの名無しさん[sage]   投稿日:2017/02/09 06:51:39  ID:IOSaScxB.net
>106
テスト設計しないんですか?

110
デフォルトの名無しさん[sage]   投稿日:2017/02/09 13:02:15  ID:dfCX7ZDm.net
>106
テストが不要だということの反論に対して、テストを忘れたらバグを検出できないとか言われても困惑するのみ

111
デフォルトの名無しさん[sage]   投稿日:2017/02/09 17:06:47  ID:EPpoXydB.net
> data = {人: 2, 犬: 4, 猿: 4, キジ: 2, 猫: 4}
こんな増えてくと予想できるリストなんかは外部ファイルにしとけよ
後は必要なら勝手にファイルに追加してねって責任を誰かに丸投げできれば重畳
テストもそいつに丸投げできる

112
デフォルトの名無しさん[]   投稿日:2017/02/09 21:32:56  ID:l61bzEJu.net
テストしにくいコードを書くのがおかしい。

113
デフォルトの名無しさん[sage]   投稿日:2017/02/09 21:39:55  ID:UTxumv29.net
残念ながら世間ではおかしいことがまかり通っててそれを修正する必要がある。

114
デフォルトの名無しさん[sage]   投稿日:2017/02/09 22:37:41  ID:V+qaSj6I.net
テストし易い部分のコードなんて誰でも書ける
コメント1件

115
デフォルトの名無しさん[]   投稿日:2017/02/10 00:43:43  ID:/WxwB06L.net

116
デフォルトの名無しさん[sage]   投稿日:2017/02/10 14:03:12  ID:0nwBBEN6.net
コードを選ぶようなテストフレームワークが悪い

117
デフォルトの名無しさん[sage]   投稿日:2017/02/10 19:11:46  ID:+HewTgrG.net
じゃあ作ろっか

118
デフォルトの名無しさん[sage]   投稿日:2017/02/15 20:12:18  ID:rWNVJqHz.net
>115
矛盾というかジレンマですな。

119
デフォルトの名無しさん[sage]   投稿日:2017/02/17 01:13:32  ID:ZnfoQYBi.net
要件や設計に書いてあることをただ満たせばいいのに、
何だテストしにくいコードって。
コメント5件

120
デフォルトの名無しさん[sage]   投稿日:2017/02/17 01:34:44  ID:EzDq9nSn.net
>119
自動テストができないコード
自動テストをやろうとしたら組合せ爆発を起こして
時間がかかりすぎるコードだよ
コメント2件

121
デフォルトの名無しさん[sage]   投稿日:2017/02/17 04:11:34  ID:cVLy1vhF.net
>119
ばーか

122
デフォルトの名無しさん[sage]   投稿日:2017/02/17 08:05:23  ID:LsFaYFdt.net
>119みたいなマがいるから困る

後々の工程や運用段階でバグが見つかっても
困るのはオレじゃないから、とか考えてるんだろうな

123
デフォルトの名無しさん[]   投稿日:2017/02/17 10:14:12  ID:rxbbpEDv.net
>119 はいきなりシステムテストレベルを行う人間なんだろうね。

それだと小さいバグ、作り上の問題に気づかない。

124
デフォルトの名無しさん[sage]   投稿日:2017/02/22 13:30:52  ID:nFPUHBlJ.net
>120
組み合わせ爆発は、自動テストが原因じゃないよね。
逆に組み合わせ多数でマニュアルだと時間がかかりすぎて繰り返し実行できないなら、
自動テスト化を考えたほうが良い。

125
デフォルトの名無しさん[sage]   投稿日:2017/02/22 20:23:22  ID:Ameqiwj8.net
自動テスト使って開発したこと無いだろお前
組み合わせが多過ぎるなら組み合わせが減るようにバラすのが先だわ
コメント1件

126
デフォルトの名無しさん[sage]   投稿日:2017/02/23 10:38:26  ID:5OVH7aZj.net(2)
>125
全組み合わせだと1億通りなのを、オールペア法や直交表で100通りくらいまでに減らすのは基本
さらにその100通りをマニュアルで実行すると時間がかかるのなら、自動化すべき
ということだよ

組み合わせ爆発は、自動テストが原因じゃない

とか、こんな説明書くの疲れるわー

127
デフォルトの名無しさん[sage]   投稿日:2017/02/23 14:42:20  ID:iUfvCfTM.net
やっぱり分かってねえ…
テスト技法の前に設計を何とかしろ
コメント1件

128
デフォルトの名無しさん[sage]   投稿日:2017/02/23 14:59:39  ID:5OVH7aZj.net(2)
>127
あのねぇ・・・
俺は>120の内容が間違ってると言いたいのだよ・・・
糞設計が原因のテスト困難性の話なんかしてないわ・・・
コメント1件

129
デフォルトの名無しさん[]   投稿日:2017/02/23 15:11:55  ID:sZtROie8.net
>128
ほっとけよ、どうせprivateをpublicにするとか言ってた奴だろ
相手を解ってない事にして見下したいだけのやつだよ

130
デフォルトの名無しさん[sage]   投稿日:2017/02/23 18:15:47  ID:eyTAmQSH.net
今時、1億通りぐらいで自動化できないとか、どれだけヘッポコなんだろw

131
デフォルトの名無しさん[]   投稿日:2017/02/23 20:44:47  ID:4lIYYkyp.net
ぼこぼこにされた>119が噛み付いて回るスレをお楽しみください

132
デフォルトの名無しさん[sage]   投稿日:2017/02/25 11:41:05  ID:7KoBIFTE.net
どうした?力技でテストすればいいんじゃないのか?w
更新情報
・スレッド一覧ページで過去ログのタイトル検索・一覧表示ができるようになりました(2016/1/20)
NGワード登録
登録する
スレッド内検索

プログラム板 タイトル検索

このスレッドが人気です(実況系)
第89回選抜高校野球大会準々決勝★70 (724)NHK実況
実況 ◆ TBSテレビ 27370 (240)TBS実況
実況 ◆ テレビ朝日 47347 大下さんシフト (140)テレ朝実況
実況 ◆ 日本テレビ 54713 (343)NTV実況
白熱ライブ ビビット★1 (702)TBS実況
連続テレビ小説 べっぴんさん★249 (543)NHK実況
羽鳥慎一モーニングショー★5 (330)テレ朝実況
NHK総合を常に実況し続けるスレ 132285 立てよ (823)NHK実況
このスレッドが人気です(ニュース系)
【森友学園】財務省「谷氏から照会があったのは2015年11月頃」 民進、谷氏招致求める 昭恵夫人の招致に首相応じず★22 (510)ニュー速+
【森友学園】財務省「谷氏から照会があったのは2015年11月頃」 民進、谷氏招致求める 昭恵夫人の招致に首相応じず★21 (1000)ニュー速+
【サッカー】新エース・久保の2戦連発で快勝のハリル日本、視聴率も20・0%大台超え (232)音楽・芸能ニュース
【国際】日本の席に白い折り鶴1羽が置かれる=核禁止条約交渉会議で 国連本部 (855)ニュー速+
【森友学園】民進・辻元氏「幼稚園に入ろうとした事実ない」「公園補助金は麻生政権下で決定」報道各社にFAXで見解を発表★8 (1001)ニュー速+
【社会】「てるみくらぶ」ツアー参加者帰国 怒りあらわに「観光どころではなかった。刑事告訴検討」突然宿泊代請求 泣き崩れる女性も★5 (721)ニュー速+
【森友学園】民進・辻元氏「幼稚園に入ろうとした事実ない」「公園補助金は麻生政権下で決定」報道各社にFAXで見解を発表★7 (1000)ニュー速+
【天皇陛下譲位】「皇太子さまと住まい入れ替え」官邸、寝耳に水 宮内庁と溝 (558)ニュー速+
プログラム板の人気スレ
オブジェクト指向って自然な文法だな 2 (559)
オブジェクト指向って不自然な文法だよな (1000)
Excel VBA 質問スレ Part47 (424)
【統計分析】機械学習・データマイニング14 (395)
くだすれPython(超初心者用) その32 (1001)
Visual Studio 2017 (843)
次世代言語議論スレ[Go Rust Haskell Scala]第3世代 (429)
C言語なら俺に聞け 139 (592)
C#, C♯, C#相談室 Part92 (735)
C++相談室 part129 (939)
推薦図書/必読書のためのスレッド 81 (581)
ふらっと C#,C♯,C#(初心者用) Part127 (134)
Swift part10 (316)
Pythonのお勉強 Part52 (725)
Xamarin Part3 (663)
【PHP】下らねぇ質問はここに書き込みやがれ 8 (118)
Visual Studio 2015 Part8 (555)
ねねっちと一緒にプログラムを勉強するスレ第2話 (86)
Git 15 (374)
Java入門・初心者質問スレ Part.2 (930)
クラス名・変数名に迷ったら書き込むスレ。Part27 (929)
HSP総合スレ【part 10】 [無断転載禁止](c)2ch.net (255)
☆★Java質問・相談スレッド179★★ (829)
プログラミング言語 Rust 2 (704)
Ruby 初心者スレッド Part 59 (938)
ドルオタワイ、1からプログラミングを学びたい (130)
+ JavaScript の質問用スレッド vol.122 + (868)
このサイトについて
このサイトは2ちゃんねるからデータを取得し、表示するサービスです。
画像のインライン表示機能について
画像のURLの後ろにある[画像をインライン表示]をクリックすると、URLの下に表示します。
表示される画像は横幅100pxに縮小されていて、クリックすると原寸で表示します。
このサイトの特徴
1)スレッド内検索ができます
2)レス(「>>1」など)のポップアップができます
3)不適切な言葉を含む投稿を表示しません
4)ページ内で画像を直接表示できます
5)2ch他スレッドへのリンクはタイトル・板名つきでリンクします
6)すっきりとしたデザインで表示します
7)最新スレや前スレをチェック・一覧表示します
8)NGワード機能の搭載でイヤな言葉が目に入りません
9)荒らしを自動チェックします
10)スレッド内・同一IDの書き込みだけ表示できます
11)レスの返事をレスされた発言の下に表示する「まとめビュー」が利用できます
12)シリーズ化したスレッドの一覧を表示します
13)最新のスレッドがある場合はお知らせします
削除について
こちらをご覧ください
機能要望について
現在機能要望受付中です。
問い合わせについて
こちらのページからどうぞ
広告


首都圏の方、ソフトバンク光オススメですよ


このサイトは2ch.scからデータを取得・表示しています。削除などについてはこちらをご覧ください。 アクセスモード:差分取得 - 新着書き込みなし(304)