テストを書いてからリファクタリングするというけれど、
コードの内容によっては、それが現実的に不可能な場合がある。
汚いコードであればあるほど、リファクタリングの前に
テストを書くのは難しくなる。
テストが書けるのは、単機能の関数になっているものだけ。
1000行以上からなる複数の処理を行う関数などテストを先に書くなんてまず不可能。
テストを書くためには、コードの再配置を先にやらなくてはいけない。
コードの順番を変えたりモジュールに分離するなどして、小さな処理にまとめて関数化する。
そこまでやってやっとテストが書ける。
現実的な修正の順番としては
コード再配置 → テストコード記述 → リファクタリング
にならざるをえない。
コード再配置はテストがない状態で行うから非常に神経を使う。
ミスを起こさないような再配置しかやってはいけない。
探検
テストを書いてからリファクタリングなんてのは幻想
2012/10/03(水) 00:24:26.88
2012/10/03(水) 00:29:16.55
See: Working Effectively with Legacy Code
2012/10/03(水) 03:59:19.12
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
2012/10/03(水) 14:23:07.28
>>1
> 1000行以上からなる複数の処理を行う関数などテストを先に書くなんてまず不可能。
そうでもないよ。
================================== 終了 ===============================
> 1000行以上からなる複数の処理を行う関数などテストを先に書くなんてまず不可能。
そうでもないよ。
================================== 終了 ===============================
5デフォルトの名無しさん
2012/10/14(日) 16:37:35.20 関数をリファクタリングするのは簡単だが、
明らかに関数になってない処理、
つまりいろんな手続きのあつまりを修正するのは難しい。
なぜなら、その処理の集まりを実行すると
何十もある状態(データベースなどの値)が一気に変化するから。
関数に値を数個入れて、一個の値を返すのではなく
何十個も値を入れて、何十個も値を返すという状態になってる。
そんなものにどうやってテストコードを書くのか。
こういうのはテストコードを書く前に、処理の集まりの中から
関数になる部分を抜き取るという作業になる。
抜き出した部分にテスト書くことはできるが、
処理の集まりの方に、テストを書くのはまず不可能。
明らかに関数になってない処理、
つまりいろんな手続きのあつまりを修正するのは難しい。
なぜなら、その処理の集まりを実行すると
何十もある状態(データベースなどの値)が一気に変化するから。
関数に値を数個入れて、一個の値を返すのではなく
何十個も値を入れて、何十個も値を返すという状態になってる。
そんなものにどうやってテストコードを書くのか。
こういうのはテストコードを書く前に、処理の集まりの中から
関数になる部分を抜き取るという作業になる。
抜き出した部分にテスト書くことはできるが、
処理の集まりの方に、テストを書くのはまず不可能。
6デフォルトの名無しさん
2012/10/14(日) 17:42:49.53 関数 {
ここからAの処理
:
:
ここからBの処理
:
:
ここからCの処理
:
:
}
こういうのはリファクタリングしやすい。
ここからAの処理
:
:
ここからBの処理
:
:
ここからCの処理
:
:
}
こういうのはリファクタリングしやすい。
7デフォルトの名無しさん
2012/10/14(日) 17:44:07.73 でも実際には、こうなっている。
関数 {
Aの処理その1
Bの処理その1
Cの処理その1
Cの処理その2
Aの処理その2
Bの処理その2
Bの処理その3
Aの処理その3
Cの処理その3
}
関数 {
Aの処理その1
Bの処理その1
Cの処理その1
Cの処理その2
Aの処理その2
Bの処理その2
Bの処理その3
Aの処理その3
Cの処理その3
}
8デフォルトの名無しさん
2012/10/14(日) 17:49:11.03 もちろん、どの行がどの処理かってのはわからないから
見た目にはこう見える。
関数 {
処理そのa
処理そのb
処理そのc
処理そのd
処理そのe
処理そのf
処理そのg
処理そのh
処理そのi
}
見た目にはこう見える。
関数 {
処理そのa
処理そのb
処理そのc
処理そのd
処理そのe
処理そのf
処理そのg
処理そのh
処理そのi
}
9デフォルトの名無しさん
2012/10/14(日) 17:49:52.9910デフォルトの名無しさん
2012/10/14(日) 17:53:01.93 >>8の「関数」のテストを書けばいいだけと思うかもれないが、
「関数」がどんな処理を行なっているかは明確に書かれていない。
データベースの何かの値を読んで、なんかの値を返す。
そしてその他のサーバーとも通信している。
ファイルにも保存する。
徐々に機能が追加されてしまっており仕様がない。
入力となる組み合わせもデータベースのいろんな状態を考慮するために
こんなので全体が何をしているかのテストを書くのは不可能。
「関数」がどんな処理を行なっているかは明確に書かれていない。
データベースの何かの値を読んで、なんかの値を返す。
そしてその他のサーバーとも通信している。
ファイルにも保存する。
徐々に機能が追加されてしまっており仕様がない。
入力となる組み合わせもデータベースのいろんな状態を考慮するために
こんなので全体が何をしているかのテストを書くのは不可能。
2012/10/15(月) 11:19:25.44
>>10
> こんなので全体が何をしているかのテストを書くのは不可能。
そうでもないよ。
================================== 終了 ===============================
> こんなので全体が何をしているかのテストを書くのは不可能。
そうでもないよ。
================================== 終了 ===============================
12デフォルトの名無しさん
2012/10/15(月) 11:24:01.39 反論できないのを見るとすっきりするなw
2012/10/15(月) 13:05:35.58
14デフォルトの名無しさん
2012/10/15(月) 15:10:45.672012/10/15(月) 15:22:46.82
>>14
マジで、この関数のテストどう書けばいいかわかんないの?
超簡単じゃん、これ。書き方が下手なだけで、記述が冗長になってるだけ。
・システムコール以外の関数のスタブを準備する
・扱うファイルのフォーマットがわかるなら、そのファイルを準備する
・フォーマットがわからないなら、システムコールと同名のスタブを準備する
・コンパイルして実行できるmainあるいはxUnitのコードを書く
・全部の(をめざして)return文を実行するようなテストを書く
・全部の(をめざして)if-elseを分岐するようなテストを書く
マジで、この関数のテストどう書けばいいかわかんないの?
超簡単じゃん、これ。書き方が下手なだけで、記述が冗長になってるだけ。
・システムコール以外の関数のスタブを準備する
・扱うファイルのフォーマットがわかるなら、そのファイルを準備する
・フォーマットがわからないなら、システムコールと同名のスタブを準備する
・コンパイルして実行できるmainあるいはxUnitのコードを書く
・全部の(をめざして)return文を実行するようなテストを書く
・全部の(をめざして)if-elseを分岐するようなテストを書く
16デフォルトの名無しさん
2012/10/15(月) 15:23:43.3217デフォルトの名無しさん
2012/10/15(月) 15:25:16.96 言っとくが修正が終わったものを持ってくるだけじゃだめだぞ。
ちゃんと先にテストを書いたことがわかるように、
修正前のコード+テストの状態のものを持ってくること。
ちゃんと先にテストを書いたことがわかるように、
修正前のコード+テストの状態のものを持ってくること。
2012/10/15(月) 15:26:01.91
つか、まさかとは思うけど、『レガシーコード改善ガイド』読んでないとか?
読めよw
読めよw
2012/10/15(月) 15:27:04.34
>>16
ヘッダファイル準備しろよ。そしたら実コード書いてやる。
ヘッダファイル準備しろよ。そしたら実コード書いてやる。
20デフォルトの名無しさん
2012/10/15(月) 15:34:36.31 >>16
このコードが意味不明なのだから
先にヘッダファイルが用意できるわけがない。
リファクタリングしなければ、ヘッダファイル
(何を関数にするか)判断できないだろ。
今お前はテストの前にリファクタリングを要求したんだよ。
このコードが意味不明なのだから
先にヘッダファイルが用意できるわけがない。
リファクタリングしなければ、ヘッダファイル
(何を関数にするか)判断できないだろ。
今お前はテストの前にリファクタリングを要求したんだよ。
2012/10/15(月) 15:35:18.81
2012/10/15(月) 15:38:07.18
>>20
> このコードが意味不明なのだから
> 先にヘッダファイルが用意できるわけがない。
ちょっと何言ってるかわからないよ。
リファクタリングの定義知ってる?
動作するものを、その振る舞いを変えずに構造を変えることだよ。
つまり、ビルドできるものが前提。
ヘッダファイルが用意できないのなら、リファクタリングはおろか、ビルドもできないよ。
> リファクタリングしなければ、ヘッダファイル
> (何を関数にするか)判断できないだろ。
ヘッダファイルがなんなのかも知らないの?
関数宣言が入ってたり、構造体の定義が入ってたりする奴だよ?
> このコードが意味不明なのだから
> 先にヘッダファイルが用意できるわけがない。
ちょっと何言ってるかわからないよ。
リファクタリングの定義知ってる?
動作するものを、その振る舞いを変えずに構造を変えることだよ。
つまり、ビルドできるものが前提。
ヘッダファイルが用意できないのなら、リファクタリングはおろか、ビルドもできないよ。
> リファクタリングしなければ、ヘッダファイル
> (何を関数にするか)判断できないだろ。
ヘッダファイルがなんなのかも知らないの?
関数宣言が入ってたり、構造体の定義が入ってたりする奴だよ?
2012/10/15(月) 15:41:19.98
もっと具体的に書かないとわからいのかな。
PSEND_CONDITIONとかSYS_PAGE_HEADの定義や、MakeSendMountDevice()の宣言が書かれたヘッダが必要。
じゃないとコンパイルできないじゃん。
PSEND_CONDITIONとかSYS_PAGE_HEADの定義や、MakeSendMountDevice()の宣言が書かれたヘッダが必要。
じゃないとコンパイルできないじゃん。
24デフォルトの名無しさん
2012/10/15(月) 15:41:21.69 > それはなんで実行できないの?
テストを書くと時間がかかるので、メリットが
相殺またはマイナスになってしまうから。
たとえば数値を+1する関数にいちいちテストは書かない。
これを間違える可能性は極めて少ないから。
本気でやるのならテスト項目は無限にある。
極端な例で言えば、全パターンの組み合わせテストを
行うと何千年もかかることもある。
すべてにテストを書くのが愚かであるのと同じように
間違いの可能性が少ない修正にテストは不要。
そのようなテスト不要な場所を見つけ、テストを書く前に
ある程度コードをリファクタリングするのが効率が良い。
テストを書くと時間がかかるので、メリットが
相殺またはマイナスになってしまうから。
たとえば数値を+1する関数にいちいちテストは書かない。
これを間違える可能性は極めて少ないから。
本気でやるのならテスト項目は無限にある。
極端な例で言えば、全パターンの組み合わせテストを
行うと何千年もかかることもある。
すべてにテストを書くのが愚かであるのと同じように
間違いの可能性が少ない修正にテストは不要。
そのようなテスト不要な場所を見つけ、テストを書く前に
ある程度コードをリファクタリングするのが効率が良い。
2012/10/15(月) 15:42:52.44
あと、多分知らないと思うから、StubやMockやxUnitについて調べた方が良いよ。
26デフォルトの名無しさん
2012/10/15(月) 15:44:16.59 >>23
> PSEND_CONDITIONとかSYS_PAGE_HEADの定義や、MakeSendMountDevice()の宣言が書かれたヘッダが必要。
> じゃないとコンパイルできないじゃん。
それこそ、スタブ書けって話だなw
> PSEND_CONDITIONとかSYS_PAGE_HEADの定義や、MakeSendMountDevice()の宣言が書かれたヘッダが必要。
> じゃないとコンパイルできないじゃん。
それこそ、スタブ書けって話だなw
2012/10/15(月) 15:45:18.08
>>24
安心してリファクタリングができるだけのテストがあれば十分。
誰もC0/C1カバレッジ100%のテストを書けとか言ってないよ?
> 本気でやるのならテスト項目は無限にある。
> 極端な例で言えば、全パターンの組み合わせテストを
> 行うと何千年もかかることもある。
循環的複雑度って知ってるかな。
上のURLのコードは「簡単」な部類だよ。全然「複雑」じゃない。
安心してリファクタリングができるだけのテストがあれば十分。
誰もC0/C1カバレッジ100%のテストを書けとか言ってないよ?
> 本気でやるのならテスト項目は無限にある。
> 極端な例で言えば、全パターンの組み合わせテストを
> 行うと何千年もかかることもある。
循環的複雑度って知ってるかな。
上のURLのコードは「簡単」な部類だよ。全然「複雑」じゃない。
2012/10/15(月) 15:46:00.22
2012/10/15(月) 15:47:31.99
2012/10/21(日) 00:18:34.09
2012/10/22(月) 11:16:06.10
2012/10/22(月) 14:56:28.67
事前にテストなんか書けない、ということにしたい人達って何が目的なんだろうか。
事前にテストを書かないことの理論武装をしたくて、同調者を探してるのか?
事前にテストを書かないことの理論武装をしたくて、同調者を探してるのか?
33デフォルトの名無しさん
2012/10/22(月) 20:18:22.95 事前にテストを書くのは不可能ではないが、
事前にテストを書くとコストが高くなることがある。
レガシーなコードがそう。
ある程度片付けてからテストコードを
書いたほうが効率がいい。
事前にテストを書くとコストが高くなることがある。
レガシーなコードがそう。
ある程度片付けてからテストコードを
書いたほうが効率がいい。
2012/10/22(月) 22:55:12.15
どうやって振る舞いが変わってないことを
証明すんの?
証明すんの?
2012/10/23(火) 00:03:06.37
test
2012/10/23(火) 00:08:10.16
変更前のテストが無いと
振るまいが変わってない保証がないよね
振るまいが変わってない保証がないよね
37デフォルトの名無しさん
2012/10/23(火) 03:07:20.45 テストがあったからって
振る舞いが変わってないという
保証はないよ。
なぜなら、そのテストが完璧なテストであるという
保証がないから。
振る舞いが変わってないという
保証はないよ。
なぜなら、そのテストが完璧なテストであるという
保証がないから。
38デフォルトの名無しさん
2012/10/23(火) 03:18:27.38 簡単な処理に対するテストは簡単にかける。
だけど、リファクタリングをしたい = コードが汚い = 複雑な処理をしている
このテストを書くのは、すごく大変になる。
仮にリファクタリング対象の関数が、10の処理をしていたとしよう。
これが内部で綺麗に分かれていれば、10の処理に対するテストを書いて、10の関数に分ければいい
だけど、10の処理が内部で複雑に絡み合っていたら10乗のテストを書かなければいけない。
これだけテストの数が違うわけで、先にプチリファクタリングを行なって
内部で処理を分解したほうがはるかにコストが低いというのがわかるだろう。
だけど、リファクタリングをしたい = コードが汚い = 複雑な処理をしている
このテストを書くのは、すごく大変になる。
仮にリファクタリング対象の関数が、10の処理をしていたとしよう。
これが内部で綺麗に分かれていれば、10の処理に対するテストを書いて、10の関数に分ければいい
だけど、10の処理が内部で複雑に絡み合っていたら10乗のテストを書かなければいけない。
これだけテストの数が違うわけで、先にプチリファクタリングを行なって
内部で処理を分解したほうがはるかにコストが低いというのがわかるだろう。
39デフォルトの名無しさん
2012/10/23(火) 03:29:50.21 そうだね。恥をかいたのは女性だけど
40デフォルトの名無しさん
2012/10/23(火) 03:36:13.09 先にテストをやれば〜とか
テストがあれば〜とか
言ってる人って、テストの作成・修正のコストを
無視してるんだよねw
テストがあれば〜とか
言ってる人って、テストの作成・修正のコストを
無視してるんだよねw
41デフォルトの名無しさん
2012/10/23(火) 06:09:57.99 あまりにひどけりゃリファクタリングよりも書きなおす方を選ぼう。
42デフォルトの名無しさん
2012/10/23(火) 06:27:51.93 仕様が完全にわかっていれば
それも出来るだろうけどな。
それも出来るだろうけどな。
43デフォルトの名無しさん
2012/10/23(火) 06:45:06.99 レガシーコード改善ガイドにも
コードの中の一部分を取り出して、
他のクラスに移動する。
新しいコードのテストは書くが
古いコードのテストは書かないって
よく読めばかいてあるよ。
コードの中の一部分を取り出して、
他のクラスに移動する。
新しいコードのテストは書くが
古いコードのテストは書かないって
よく読めばかいてあるよ。
2012/10/23(火) 10:43:00.90
動いてるソースをいじるなよ
45デフォルトの名無しさん
2012/10/23(火) 19:25:45.13 機能追加とバグ改修の要求が一つもなけりゃいじらないよ
2012/10/24(水) 09:50:26.74
リファクタリングに必要なのは結局は説得力だからな
「コードの見かけは変わったけどこの機能は変わってません」ということを報らせることができれば妥協、でいいんじゃないか
必須の機能についてのテストが書かれてなかったのなら、そりゃモトモト足りなかったってことで事前に書いとくのがいいだろう
「コードの見かけは変わったけどこの機能は変わってません」ということを報らせることができれば妥協、でいいんじゃないか
必須の機能についてのテストが書かれてなかったのなら、そりゃモトモト足りなかったってことで事前に書いとくのがいいだろう
47デフォルトの名無しさん
2012/10/24(水) 16:51:24.57 オリジナルを作ったときのテストなら信じられるが
後から作ったテストは信用ならないな。
後から作ったテストは信用ならないな。
2012/10/24(水) 17:07:38.54
>>43
> 新しいコードのテストは書くが
> 古いコードのテストは書かないって
> よく読めばかいてあるよ。
そもそも「レガシーコード」とは、「テストの無いコード」のことであって、それに対して
どう対処していくか、どうテストを書いていけば良いのかが『レガシーコード改善ガイド』なんだけど。
どこをどうよく読んだの?
> 新しいコードのテストは書くが
> 古いコードのテストは書かないって
> よく読めばかいてあるよ。
そもそも「レガシーコード」とは、「テストの無いコード」のことであって、それに対して
どう対処していくか、どうテストを書いていけば良いのかが『レガシーコード改善ガイド』なんだけど。
どこをどうよく読んだの?
2012/12/19(水) 01:23:05.20
結論から言うと、素人がやる上から下へのベタ書きの方が理解しやすい
2012/12/19(水) 11:00:58.54
小規模ならね
51デフォルトの名無しさん
2012/12/30(日) 00:02:34.08 上から下へのベタ書きが理解しやすいのは
ifとforがほとんどないコードで100行まで。
ifとforがほとんどないコードで100行まで。
2013/01/02(水) 11:19:49.01
クローズドな黎明期ならCプログラミング診断室のような糞本でも商売が出来た
2013/01/27(日) 00:48:54.78
ぶっちゃけテストユニット作ってリファクタリングとかより
仕様理解してクソコードは全捨て&全書き直し
その後、人力デバッグした方が手っ取り早い
仕様理解してクソコードは全捨て&全書き直し
その後、人力デバッグした方が手っ取り早い
2013/01/27(日) 00:56:19.75
さんざん言われてるが、どんだけコストをかけるか、かけたコストは回収できるのか、ということでしかないからな
無限の時間と無限のコストと無限の人員と仏の顧客がいるのなら、そりゃあねえ
無限の時間と無限のコストと無限の人員と仏の顧客がいるのなら、そりゃあねえ
2013/01/27(日) 14:10:54.08
>仕様理解して
テストコード(あるだけましorソース)が仕様書です。(キリッ
テストコード(あるだけましorソース)が仕様書です。(キリッ
2013/01/28(月) 11:11:45.51
仕様書はウソをつくがテストコードはウソをつかない
客の目に触れない部分は極力無駄なドキュメントを書かない
客の目に触れない部分は極力無駄なドキュメントを書かない
2013/01/28(月) 13:46:04.77
仕様書の厚さが請求金額に比例します!(キリッ
2013/02/06(水) 22:51:21.05
ヘ(^o^)ヘ いいぜ
|∧
/ /
(^o^)/ てめえが何でも
/( ) 思い通りに出来るってなら
(^o^) 三 / / >
\ (\\ 三
(/o^) < \ 三
( /
/ く まずはそのふざけた
幻想をぶち殺す
スレタイみたら、このAA貼られまくってんだろうな、と思っていたんだが…
|∧
/ /
(^o^)/ てめえが何でも
/( ) 思い通りに出来るってなら
(^o^) 三 / / >
\ (\\ 三
(/o^) < \ 三
( /
/ く まずはそのふざけた
幻想をぶち殺す
スレタイみたら、このAA貼られまくってんだろうな、と思っていたんだが…
60デフォルトの名無しさん
2014/02/27(木) 22:28:26.67 設計せずにテスト書くから>>1みたいになるんだろ
61デフォルトの名無しさん
2014/03/01(土) 05:02:58.30 「テスト」って「とりあえず作ってみる」ってことで合ってる?
62デフォルトの名無しさん
2014/03/01(土) 05:43:48.56 合ってない
63デフォルトの名無しさん
2014/03/02(日) 10:27:27.27 じゃぁなんだよ
2014/03/02(日) 11:48:58.69
COBOLの悲劇史を繰り返さないための手段であって
TESTでバグ出しするのは副次的な作業なんだけどな
仕様書や設計書に出てこない後から外から見るとナゾな挙動を説明するための
TESTでバグ出しするのは副次的な作業なんだけどな
仕様書や設計書に出てこない後から外から見るとナゾな挙動を説明するための
65デフォルトの名無しさん
2014/03/04(火) 02:47:44.08 テストって結局何よ?
2014/03/04(火) 11:53:44.72
Test存在意義がわからない
Testの為に機能を細切れにするの嫌だ
プロジェクトとTestの親和性に問題がある
そんな主張をするヤツを効率的に排除するツール
Testの為に機能を細切れにするの嫌だ
プロジェクトとTestの親和性に問題がある
そんな主張をするヤツを効率的に排除するツール
68デフォルトの名無しさん
2014/03/07(金) 22:19:35.78 テスト開発駆動
69デフォルトの名無しさん
2014/03/10(月) 17:37:30.97 きっちり設計していればテストは不要
2014/03/10(月) 18:43:43.35
自動化できる部分を自動化できることをきっちりという
テスト
2014/07/29(火) 23:13:43.20ID:Lzz8ZlFD
テストドリブンって生産性悪いよな?
2014/07/30(水) 11:48:15.62ID:X0HdXrVF
コード量の生産性は悪い
中長期的および小中規模における保守改良を含めると生産性は結果的に高くなる
それだけの話
一人で書く・短期で書く・大人数で分担製作する・顔も知らない人が長期保守する等の場合は大きな障害になりうる
そういうプログラミングしかしないのなら最終証明書的なテスト以外はやらないほうがいいことが多い
中長期的および小中規模における保守改良を含めると生産性は結果的に高くなる
それだけの話
一人で書く・短期で書く・大人数で分担製作する・顔も知らない人が長期保守する等の場合は大きな障害になりうる
そういうプログラミングしかしないのなら最終証明書的なテスト以外はやらないほうがいいことが多い
2014/10/25(土) 15:43:01.88ID:2HGeWB2j
>一人で書く・短期で書く・大人数で分担製作する・顔も知らない人が長期保守する等の場合は
どこかの警視庁プロファイリングを思い出した
どこかの警視庁プロファイリングを思い出した
2014/11/08(土) 14:04:15.77ID:UfN+T2xC
設計できるレベルのエンジニアが少ないのでしかたない
2014/12/02(火) 21:54:52.49ID:Emi9Jogj
テスト ドリチン
2014/12/07(日) 09:17:55.92ID:Y58/hvmd
1 デフォルトの名無しさん sage 2012/10/03(水) 00:24:26.88
テストを書いてからリファクタリングするというけれど
テストとリファクタリングは関係無くね?
テストを書いてからリファクタリングするというけれど
テストとリファクタリングは関係無くね?
2014/12/17(水) 21:46:46.06ID:KocJU1bl
アホには関係
2015/02/14(土) 07:54:44.64ID:SarccncW
2015/02/14(土) 10:03:56.04ID:5BqTjtvr
>テストを書いてからリファクタリングするというけれど
どこでそんなこと言われてるんだよ
どこでそんなこと言われてるんだよ
2015/02/21(土) 05:55:05.56ID:RdZxGcLP
てすてす。
2015/02/24(火) 06:35:08.88ID:xl3zgpOz
2015/03/10(火) 22:04:47.66ID:dg/tj86w
てすと
2015/03/29(日) 23:25:52.43ID:n/vW8Ca/
2015/04/05(日) 11:08:09.11ID:ZSoXTOOk
うんこ
2015/04/15(水) 21:28:33.53ID:OQHnBd+X
2015/05/04(月) 11:40:34.47ID:Brvnrtbf
テストする
2015/06/30(火) 00:28:27.44ID:Sh+nk1gx
もう仕様書の代わりにテストを上から提出してもらえばいいんじゃね?
2015/07/19(日) 08:54:14.12ID:rizf9cO8
「テスト仕様書を下さい。でないと作れません」
2015/10/06(火) 17:42:46.37ID:ZA2UYVtv
ヘ(^o^)ヘ いいぜ
|∧
/ /
(^o^)/ テストを書いてから
/( ) リファクタリング出来るってなら
(^o^) 三 / / >
\ (\\ 三
(/o^) < \ 三
( /
/ く まずはそのふざけた
幻想をぶち殺す
|∧
/ /
(^o^)/ テストを書いてから
/( ) リファクタリング出来るってなら
(^o^) 三 / / >
\ (\\ 三
(/o^) < \ 三
( /
/ く まずはそのふざけた
幻想をぶち殺す
2015/10/24(土) 07:59:19.85ID:Ir698C46
2015/10/28(水) 21:55:48.26ID:en6I5N16
そげぶ
2015/10/31(土) 20:40:40.38ID:MdiIPwHq
そもそもファウラーのリファクタリングは読んだの?
テストしてないのにコードいじっちゃったらその時点でリファクタリングじゃナイよ?
テストしてないのにコードいじっちゃったらその時点でリファクタリングじゃナイよ?
2015/11/01(日) 09:19:02.47ID:qqj1vZuH
とバカが何か言っております
バカほど自分の妄想を普遍的な事実のように語る
バカほど自分の妄想を普遍的な事実のように語る
2015/11/01(日) 11:24:21.57ID:e7+SbRee
ただのコード整理のことをリファクタリングと呼んでるなら別にそれでもいいけどね
2016/01/21(木) 12:50:33.37ID:FLUZJlG7
ふむ
2016/01/27(水) 22:08:01.75ID:1zcp8qcT
コード整理はリファクタリングの主要な一種だなあ
2016/01/29(金) 01:36:46.48ID:3QXtNRWh
振る舞いが変わってないのを証明出来るならどの手法でもリファクタリングを名乗っていいよ
2016/02/03(水) 18:22:39.26ID:mmJ5x1I8
つまりこの世にリファクタリングは存在しない
100デフォルトの名無しさん
2016/02/07(日) 15:40:59.07ID:Y5xiZodX 部分的には出来る
101デフォルトの名無しさん
2016/02/14(日) 20:20:34.76ID:9UaM9+lc リファクタリングしたらお金貰えますか?
102デフォルトの名無しさん
2016/05/20(金) 20:00:00.76ID:e1TBDqG+ リファクタリングしたらお金もらえる契約だった貰えます
103デフォルトの名無しさん
2016/05/21(土) 12:44:55.03ID:JO+/Ov64 私のリファクタリングおじさんが匿名で銀行にお金を振り込んでくれるよ
104デフォルトの名無しさん
2017/02/28(火) 07:59:14.85ID:K7hLR7oh 俺の全力120%リファクタリングを見せるときが来たようだな
105デフォルトの名無しさん
2018/04/22(日) 21:49:11.75ID:PsQCMKRd フッ、その程度の力で俺のテストファーストを破れると思うなよ
106デフォルトの名無しさん
2018/04/23(月) 13:16:52.06ID:8zXr1SIe107デフォルトの名無しさん
2018/05/23(水) 19:41:33.31ID:Au5e7VGg 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
VZCU5
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
VZCU5
108デフォルトの名無しさん
2018/07/05(木) 01:50:13.98ID:RfoszcD2 6L4
109デフォルトの名無しさん
2020/01/29(水) 13:51:22.02ID:MZiWsP4Y 修正ついでにリファクタリングしたけど、機能は変えてないからテストしなくて良いよね
110デフォルトの名無しさん
2022/04/22(金) 14:27:10.14ID:+Ag0wcTG てst
111あぼーん
NGNGあぼーん
112デフォルトの名無しさん
2022/06/10(金) 07:54:47.35ID:7BMdU4Yn あっそ
113デフォルトの名無しさん
2023/06/06(火) 22:29:07.67ID:jiKuTUOv >>1
「テストを書く」の意味がわからない。
「テストを書く」の意味がわからない。
114デフォルトの名無しさん
2023/06/28(水) 13:43:55.35ID:BVdlIcNn 漠∞!!!!
列∞!!!!!
廷∞!!!!!!
器∞!!!!!!!
斗∞!!!!!!!!
容∞!!!!!!!!!
寿∞!!!!!!!!!!
非∞!!!!!!!!!!!
列∞!!!!!
廷∞!!!!!!
器∞!!!!!!!
斗∞!!!!!!!!
容∞!!!!!!!!!
寿∞!!!!!!!!!!
非∞!!!!!!!!!!!
115デフォルトの名無しさん
2023/06/28(水) 17:23:02.87ID:ePd0oqZH TDDは設計変更がそうそう起きない場合にしか現実的じゃないわな
外部ツールやらドメインやらの知識が更新されたり、仕様変更が起きると
それに伴う設計変更が起きて、同時にテストも直さなきゃならなくなる
無思慮にテストファーストがいいって言ってるやつは信用ならん
外部ツールやらドメインやらの知識が更新されたり、仕様変更が起きると
それに伴う設計変更が起きて、同時にテストも直さなきゃならなくなる
無思慮にテストファーストがいいって言ってるやつは信用ならん
116デフォルトの名無しさん
2023/06/28(水) 19:07:09.03ID:X+ansWrV 自動テストは無理かも知らんが、
ある程度この種の仕様テストは通すってのは用意しなきゃいかんでしょ。
ある程度この種の仕様テストは通すってのは用意しなきゃいかんでしょ。
117デフォルトの名無しさん
2023/06/28(水) 19:28:23.06ID:ePd0oqZH なんか話が噛み合ってないな
テストを用意するのは当たり前、その上でテストファーストの是非を問うスレじゃないのか
テストを用意するのは当たり前、その上でテストファーストの是非を問うスレじゃないのか
118デフォルトの名無しさん
2023/06/28(水) 22:15:25.11ID:8Nsh461b テスト書いたほうが実装は楽
むしろテストお陰で実装の質を上げられる
リファクタリングも同じ
むしろテストお陰で実装の質を上げられる
リファクタリングも同じ
119デフォルトの名無しさん
2023/06/30(金) 00:06:22.90ID:qUWZqjjs クソ実装に合わせたテストコードなんてリファクタリングしたら無駄になるやろ
120デフォルトの名無しさん
2023/06/30(金) 03:44:05.79ID:oUIG4oIk 最初の実装まではテストいらんよな
・関数Aのテストを書く
・関数Aを書く
・関数Bのテストを書く
・関数Bを書く
・関数Aと関数Bの重複部分を関数Cにリファクタリングするべ
・関数Cのテストを書く
・関数Cを書く
・関数Aのテストを修正←いらんやろ
・関数Aを修正
・関数Bのテストを修正←いらんやろ
・関数Bを修正
・関数Aのテストを書く
・関数Aを書く
・関数Bのテストを書く
・関数Bを書く
・関数Aと関数Bの重複部分を関数Cにリファクタリングするべ
・関数Cのテストを書く
・関数Cを書く
・関数Aのテストを修正←いらんやろ
・関数Aを修正
・関数Bのテストを修正←いらんやろ
・関数Bを修正
121デフォルトの名無しさん
2023/06/30(金) 04:40:09.64ID:7dyjbNOC 実装にはカオス期と安定期があるからカオス期のテストは無駄
安定期に入ったらテストを書け
安定期に入ったらテストを書け
122デフォルトの名無しさん
2023/08/23(水) 00:04:39.70ID:0BjzShXD 「テストを書く」って何?
123デフォルトの名無しさん
2023/08/23(水) 03:12:21.78ID:rNgOhsHc >>122
このスレの文脈ではユニットテストのソースコードを書くという意味では?
このスレの文脈ではユニットテストのソースコードを書くという意味では?
124デフォルトの名無しさん
2023/08/23(水) 04:28:20.13ID:0BjzShXD 仕事だとコーディングのことを「書く」とは言わないからな。
125デフォルトの名無しさん
2023/08/25(金) 01:30:03.89ID:gEfXDtwy そりゃ頭痛が痛いなんて言わないからな
コードを書くとは言う。
コーディング(コードを書くこと)を書くとは言わない
コードを書くとは言う。
コーディング(コードを書くこと)を書くとは言わない
126デフォルトの名無しさん
2023/08/30(水) 15:08:16.42ID:bGhOLdki テスト
127デフォルトの名無しさん
2023/09/20(水) 17:55:14.32ID:99hKkbYU ヽ(*'0'*)ツ ワァオォ!!
128デフォルトの名無しさん
2023/12/06(水) 11:48:46.05ID:oM0gjrfW 全銀システム障害「詳細設計書見落とし」でオーバーフローの痛恨、再発防止なるか
https://xtech.nikkei.com/atcl/nxt/column/18/00001/08680/
やっぱりテスト駆動にしておけば回避出来たよな
https://xtech.nikkei.com/atcl/nxt/column/18/00001/08680/
やっぱりテスト駆動にしておけば回避出来たよな
129デフォルトの名無しさん
2023/12/09(土) 15:17:43.26ID:F2smNVkX >詳細設計書では4種類のテーブルを同時に展開できるだけの作業領域を確保することを求めていたが、プログラマーやレビュアーなどの関係者がいずれもその記述を見落とし、これが上述のオーバーフローを招いたという痛恨のミスだ
>プログラマーやレビュアーなどの関係者がいずれもその記述を見落とし
つまりテスト環境自体が無くてテストしてからって発想が抜け落ちてるのね
>プログラマーやレビュアーなどの関係者がいずれもその記述を見落とし
つまりテスト環境自体が無くてテストしてからって発想が抜け落ちてるのね
130デフォルトの名無しさん
2024/01/02(火) 22:20:43.54ID:3cCPTdjI テストケース作るのがしんどいってケースもあるからいつでもテストファーストが良いってことはないわな。
131デフォルトの名無しさん
2024/01/03(水) 14:18:03.35ID:eQVBZ7Cn テストの有無とテストファーストの是非を混同してるやつがいるが、
おそらく故意にやってるんだろうな
まあ、釣られてるやつほぼおらんけど
おそらく故意にやってるんだろうな
まあ、釣られてるやつほぼおらんけど
132デフォルトの名無しさん
2024/01/04(木) 11:26:57.34ID:iR4GsMlV テストケース作るのがしんどいってテストしないのかよ
顧客のところでバグ炸裂して終了じゃんそんなの
顧客のところでバグ炸裂して終了じゃんそんなの
133デフォルトの名無しさん
2024/01/04(木) 16:14:29.73ID:bd+yebjO まあ実際全銀でバグ炸裂して終了してるしな
NTTデータがケチる所でもないのに客に本番に近いテスト環境も別途必要ですよって説明してないんだろ
NTTデータがケチる所でもないのに客に本番に近いテスト環境も別途必要ですよって説明してないんだろ
134デフォルトの名無しさん
2024/01/05(金) 04:49:34.73ID:xFVV62H3 やっぱりプログラムを書き始める前に
テストプログラムを書いておく
これが最強
テストプログラムを書いておく
これが最強
135デフォルトの名無しさん
2024/01/10(水) 14:29:25.20ID:Pvv0OiRv プログラムを書く時は間違えるがテストコードを書く時は間違えない前提
136デフォルトの名無しさん
2024/01/10(水) 23:00:16.65ID:W4mJO5rQ テストコードを間違えるか否か以前に、テストケースが抜け落ちるか否かもあるしな
全銀の件は抜け落ちてた話だから、テストファーストでやっても抜け落ちてたから一緒
全銀の件は抜け落ちてた話だから、テストファーストでやっても抜け落ちてたから一緒
137デフォルトの名無しさん
2024/01/11(木) 19:24:45.83ID:1WZH2d+B 根本的な解決策としては
複数人でチェックする
ことかなあ
自分ではなかなか間違いに気が付かないし
自分の間違いが自分で気が付かないのは心理学でなんか名前がついていたような気がする
複数人でチェックする
ことかなあ
自分ではなかなか間違いに気が付かないし
自分の間違いが自分で気が付かないのは心理学でなんか名前がついていたような気がする
138デフォルトの名無しさん
2024/01/12(金) 08:10:20.90ID:JglZpZY+ テストコードを間違いなく漏れなく書ける人がいるならその人がプログラムを書いたらいいだけの話
139デフォルトの名無しさん
2024/01/12(金) 21:23:36.19ID:+NlTfLsQ 建築とか機械系ではエラーはほとんど起きないんだけどな
なんでソフトウエアだけ?
ちなみに航空機は安全性を考えていると重くなって飛べなくなるので
安全係数が1を切っていると聞いたが
なんでソフトウエアだけ?
ちなみに航空機は安全性を考えていると重くなって飛べなくなるので
安全係数が1を切っていると聞いたが
140デフォルトの名無しさん
2024/01/13(土) 14:43:18.36ID:qyfvMh6P ライブラリやOSなどの基本ソフトとアプリなどの応用ソフトではまったく状況が違うよ
基本ソフトは大量に配布されて(コピーされて)、頻繁に実行されるので、
最高のエンジニアに作られて、徹底的に検証される(そうされないものは淘汰される)
要するにコスパの問題だよ。1本10万円のゲームで遊びたいかい?
基本ソフトは大量に配布されて(コピーされて)、頻繁に実行されるので、
最高のエンジニアに作られて、徹底的に検証される(そうされないものは淘汰される)
要するにコスパの問題だよ。1本10万円のゲームで遊びたいかい?
141デフォルトの名無しさん
2024/01/13(土) 15:00:13.69ID:vTVsKhAm ソシャゲ課金て月に数十万単位だし
無料のAPEXのスパレジェすら1つにつき5万円だし
10万程度は払うやつなら払うよ
無料のAPEXのスパレジェすら1つにつき5万円だし
10万程度は払うやつなら払うよ
142デフォルトの名無しさん
2024/01/13(土) 15:07:45.36ID:qyfvMh6P143デフォルトの名無しさん
2024/01/13(土) 15:37:46.38ID:8Ttuq2mz 四半期の事なんて知らんが
手間考えたらOS売るなんてアホな商売よりはソシャゲのが儲かるだろうね
手間考えたらOS売るなんてアホな商売よりはソシャゲのが儲かるだろうね
144デフォルトの名無しさん
2024/01/16(火) 04:37:40.68ID:bGp483o/ OS売る商売はLinuxに滅ぼされたからな
早期に見切りをつけてクラウドに移行したMSは先見の明がある
早期に見切りをつけてクラウドに移行したMSは先見の明がある
145デフォルトの名無しさん
2024/01/17(水) 19:10:33.33ID:E+GFYvQx マジかMSはソシャゲ屋になったほうがいいな
レスを投稿する
ニュース
- 【少子化】少子化は女のせい?男のせい?SNSで不毛すぎる議論が勃発…「産ませる発言」vs「淘汰される遺伝子」泥沼バトルへ ★3 [ぐれ★]
- 政府に物価高の「恩恵」 税収は過去最高80兆円超の見通し [バイト歴50年★]
- 【F1】角田裕毅のレッドブルグループ退団が決定 海外メディアが一斉報道「彼の居場所はない」 [鉄チーズ烏★]
- 迫る「ペットボトル200円」時代 もはや値上げはタブーではない? [蚤の市★]
- 日テレ社長 国分太一に「答え合わせするまでもない」 聴取時の内容そのものが「コンプライアンス違反」 [Ailuropoda melanoleuca★]
- 【為替】円154円台に上昇、NY株400ドル超安 日米金利差の縮小観測広がる [蚤の市★]
- 【実況】博衣こよりのえちえち朝こよ🧪
- お前ら中国人は嫌いでもらんまのシャンプーは大好きだよな
- VRAVでシコるの体力消耗激しくてワロタ
- 彡(♥)(♥)「あ、待って待って!今ここで伝えたいんです!」
- 26歳公認会計士をハサミで突き殺した佐藤琴美さん(26)「ハゲすぎる、毛を生やせ」などと日常的に暴力 [963243619]
- 海自「F-35Bって艦隊防空に使うんだよな?」空自「本土防空用なんだが?」安倍晋三「揉めててワラタwww」 [668970678]
