テストを書いてからリファクタリングなんてのは幻想 (145レス)
上下前次1-新
1(7): 2012/10/03(水)00:24 AAS
テストを書いてからリファクタリングするというけれど、
コードの内容によっては、それが現実的に不可能な場合がある。
汚いコードであればあるほど、リファクタリングの前に
テストを書くのは難しくなる。
テストが書けるのは、単機能の関数になっているものだけ。
1000行以上からなる複数の処理を行う関数などテストを先に書くなんてまず不可能。
テストを書くためには、コードの再配置を先にやらなくてはいけない。
コードの順番を変えたりモジュールに分離するなどして、小さな処理にまとめて関数化する。
そこまでやってやっとテストが書ける。
現実的な修正の順番としては
コード再配置 → テストコード記述 → リファクタリング
にならざるをえない。
コード再配置はテストがない状態で行うから非常に神経を使う。
ミスを起こさないような再配置しかやってはいけない。
116: 2023/06/28(水)19:07 ID:X+ansWrV(1) AAS
自動テストは無理かも知らんが、
ある程度この種の仕様テストは通すってのは用意しなきゃいかんでしょ。
117: 2023/06/28(水)19:28 ID:ePd0oqZH(2/2) AAS
なんか話が噛み合ってないな
テストを用意するのは当たり前、その上でテストファーストの是非を問うスレじゃないのか
118: 2023/06/28(水)22:15 ID:8Nsh461b(1) AAS
テスト書いたほうが実装は楽
むしろテストお陰で実装の質を上げられる
リファクタリングも同じ
119: 2023/06/30(金)00:06 ID:qUWZqjjs(1) AAS
クソ実装に合わせたテストコードなんてリファクタリングしたら無駄になるやろ
120: 2023/06/30(金)03:44 ID:oUIG4oIk(1) AAS
最初の実装まではテストいらんよな
・関数Aのテストを書く
・関数Aを書く
・関数Bのテストを書く
・関数Bを書く
・関数Aと関数Bの重複部分を関数Cにリファクタリングするべ
・関数Cのテストを書く
・関数Cを書く
・関数Aのテストを修正←いらんやろ
・関数Aを修正
・関数Bのテストを修正←いらんやろ
・関数Bを修正
121: 2023/06/30(金)04:40 ID:7dyjbNOC(1) AAS
実装にはカオス期と安定期があるからカオス期のテストは無駄
安定期に入ったらテストを書け
122(1): 2023/08/23(水)00:04 ID:0BjzShXD(1/2) AAS
「テストを書く」って何?
123: 2023/08/23(水)03:12 ID:rNgOhsHc(1) AAS
>>122
このスレの文脈ではユニットテストのソースコードを書くという意味では?
124: 2023/08/23(水)04:28 ID:0BjzShXD(2/2) AAS
仕事だとコーディングのことを「書く」とは言わないからな。
125: 2023/08/25(金)01:30 ID:gEfXDtwy(1) AAS
そりゃ頭痛が痛いなんて言わないからな
コードを書くとは言う。
コーディング(コードを書くこと)を書くとは言わない
126: 2023/08/30(水)15:08 ID:bGhOLdki(1) AAS
テスト
127: 2023/09/20(水)17:55 ID:99hKkbYU(1) AAS
ヽ(*'0'*)ツ ワァオォ!!
128: 2023/12/06(水)11:48 ID:oM0gjrfW(1) AAS
全銀システム障害「詳細設計書見落とし」でオーバーフローの痛恨、再発防止なるか
外部リンク:xtech.nikkei.com
やっぱりテスト駆動にしておけば回避出来たよな
129: 2023/12/09(土)15:17 ID:F2smNVkX(1) AAS
>詳細設計書では4種類のテーブルを同時に展開できるだけの作業領域を確保することを求めていたが、プログラマーやレビュアーなどの関係者がいずれもその記述を見落とし、これが上述のオーバーフローを招いたという痛恨のミスだ
>プログラマーやレビュアーなどの関係者がいずれもその記述を見落とし
つまりテスト環境自体が無くてテストしてからって発想が抜け落ちてるのね
130: 2024/01/02(火)22:20 ID:3cCPTdjI(1) AAS
テストケース作るのがしんどいってケースもあるからいつでもテストファーストが良いってことはないわな。
131: 2024/01/03(水)14:18 ID:eQVBZ7Cn(1) AAS
テストの有無とテストファーストの是非を混同してるやつがいるが、
おそらく故意にやってるんだろうな
まあ、釣られてるやつほぼおらんけど
132: 2024/01/04(木)11:26 ID:iR4GsMlV(1) AAS
テストケース作るのがしんどいってテストしないのかよ
顧客のところでバグ炸裂して終了じゃんそんなの
133: 2024/01/04(木)16:14 ID:bd+yebjO(1) AAS
まあ実際全銀でバグ炸裂して終了してるしな
NTTデータがケチる所でもないのに客に本番に近いテスト環境も別途必要ですよって説明してないんだろ
134: 2024/01/05(金)04:49 ID:xFVV62H3(1) AAS
やっぱりプログラムを書き始める前に
テストプログラムを書いておく
これが最強
135: 2024/01/10(水)14:29 ID:Pvv0OiRv(1) AAS
プログラムを書く時は間違えるがテストコードを書く時は間違えない前提
136: 2024/01/10(水)23:00 ID:W4mJO5rQ(1) AAS
テストコードを間違えるか否か以前に、テストケースが抜け落ちるか否かもあるしな
全銀の件は抜け落ちてた話だから、テストファーストでやっても抜け落ちてたから一緒
137: 2024/01/11(木)19:24 ID:1WZH2d+B(1) AAS
根本的な解決策としては
複数人でチェックする
ことかなあ
自分ではなかなか間違いに気が付かないし
自分の間違いが自分で気が付かないのは心理学でなんか名前がついていたような気がする
138: 2024/01/12(金)08:10 ID:JglZpZY+(1) AAS
テストコードを間違いなく漏れなく書ける人がいるならその人がプログラムを書いたらいいだけの話
139: 2024/01/12(金)21:23 ID:+NlTfLsQ(1) AAS
建築とか機械系ではエラーはほとんど起きないんだけどな
なんでソフトウエアだけ?
ちなみに航空機は安全性を考えていると重くなって飛べなくなるので
安全係数が1を切っていると聞いたが
140: 2024/01/13(土)14:43 ID:qyfvMh6P(1/2) AAS
ライブラリやOSなどの基本ソフトとアプリなどの応用ソフトではまったく状況が違うよ
基本ソフトは大量に配布されて(コピーされて)、頻繁に実行されるので、
最高のエンジニアに作られて、徹底的に検証される(そうされないものは淘汰される)
要するにコスパの問題だよ。1本10万円のゲームで遊びたいかい?
141(1): 2024/01/13(土)15:00 ID:vTVsKhAm(1) AAS
ソシャゲ課金て月に数十万単位だし
無料のAPEXのスパレジェすら1つにつき5万円だし
10万程度は払うやつなら払うよ
142: 2024/01/13(土)15:07 ID:qyfvMh6P(2/2) AAS
>>141
Windowsの売上って四半期で何百億ドルといくらしいけど、
ソシャゲとかってそのぐらいの売上になるの?
143: 2024/01/13(土)15:37 ID:8Ttuq2mz(1) AAS
四半期の事なんて知らんが
手間考えたらOS売るなんてアホな商売よりはソシャゲのが儲かるだろうね
144: 2024/01/16(火)04:37 ID:bGp483o/(1) AAS
OS売る商売はLinuxに滅ぼされたからな
早期に見切りをつけてクラウドに移行したMSは先見の明がある
145: 2024/01/17(水)19:10 ID:E+GFYvQx(1) AAS
マジかMSはソシャゲ屋になったほうがいいな
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.615s*