テストを書いてからリファクタリングなんてのは幻想
0001デフォルトの名無しさん
垢版 |
2012/10/03(水) 00:24:26.88
テストを書いてからリファクタリングするというけれど、
コードの内容によっては、それが現実的に不可能な場合がある。

汚いコードであればあるほど、リファクタリングの前に
テストを書くのは難しくなる。

テストが書けるのは、単機能の関数になっているものだけ。
1000行以上からなる複数の処理を行う関数などテストを先に書くなんてまず不可能。

テストを書くためには、コードの再配置を先にやらなくてはいけない。
コードの順番を変えたりモジュールに分離するなどして、小さな処理にまとめて関数化する。
そこまでやってやっとテストが書ける。

現実的な修正の順番としては

コード再配置 → テストコード記述 → リファクタリング

にならざるをえない。

コード再配置はテストがない状態で行うから非常に神経を使う。
ミスを起こさないような再配置しかやってはいけない。
0095デフォルトの名無しさん
垢版 |
2015/11/01(日) 11:24:21.57ID:e7+SbRee
ただのコード整理のことをリファクタリングと呼んでるなら別にそれでもいいけどね
0098デフォルトの名無しさん
垢版 |
2016/01/29(金) 01:36:46.48ID:3QXtNRWh
振る舞いが変わってないのを証明出来るならどの手法でもリファクタリングを名乗っていいよ
0103デフォルトの名無しさん
垢版 |
2016/05/21(土) 12:44:55.03ID:JO+/Ov64
私のリファクタリングおじさんが匿名で銀行にお金を振り込んでくれるよ
0105デフォルトの名無しさん
垢版 |
2018/04/22(日) 21:49:11.75ID:PsQCMKRd
フッ、その程度の力で俺のテストファーストを破れると思うなよ
0106デフォルトの名無しさん
垢版 |
2018/04/23(月) 13:16:52.06ID:8zXr1SIe
>>1
一理あるな。
あんまり初心者のだとこのコードのテスト書く意味とは…ってなる。
つまりテスト書く前に直しが入る。
0107デフォルトの名無しさん
垢版 |
2018/05/23(水) 19:41:33.31ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

VZCU5
0108デフォルトの名無しさん
垢版 |
2018/07/05(木) 01:50:13.98ID:RfoszcD2
6L4
0109デフォルトの名無しさん
垢版 |
2020/01/29(水) 13:51:22.02ID:MZiWsP4Y
修正ついでにリファクタリングしたけど、機能は変えてないからテストしなくて良いよね
0113デフォルトの名無しさん
垢版 |
2023/06/06(火) 22:29:07.67ID:jiKuTUOv
>>1
「テストを書く」の意味がわからない。
0114デフォルトの名無しさん
垢版 |
2023/06/28(水) 13:43:55.35ID:BVdlIcNn
漠∞!!!!
列∞!!!!!
廷∞!!!!!!
器∞!!!!!!!
斗∞!!!!!!!!
容∞!!!!!!!!!
寿∞!!!!!!!!!!
非∞!!!!!!!!!!!
0115デフォルトの名無しさん
垢版 |
2023/06/28(水) 17:23:02.87ID:ePd0oqZH
TDDは設計変更がそうそう起きない場合にしか現実的じゃないわな
外部ツールやらドメインやらの知識が更新されたり、仕様変更が起きると
それに伴う設計変更が起きて、同時にテストも直さなきゃならなくなる
無思慮にテストファーストがいいって言ってるやつは信用ならん
0116デフォルトの名無しさん
垢版 |
2023/06/28(水) 19:07:09.03ID:X+ansWrV
自動テストは無理かも知らんが、
ある程度この種の仕様テストは通すってのは用意しなきゃいかんでしょ。
0117デフォルトの名無しさん
垢版 |
2023/06/28(水) 19:28:23.06ID:ePd0oqZH
なんか話が噛み合ってないな
テストを用意するのは当たり前、その上でテストファーストの是非を問うスレじゃないのか
0118デフォルトの名無しさん
垢版 |
2023/06/28(水) 22:15:25.11ID:8Nsh461b
テスト書いたほうが実装は楽
むしろテストお陰で実装の質を上げられる
リファクタリングも同じ
0119デフォルトの名無しさん
垢版 |
2023/06/30(金) 00:06:22.90ID:qUWZqjjs
クソ実装に合わせたテストコードなんてリファクタリングしたら無駄になるやろ
0120デフォルトの名無しさん
垢版 |
2023/06/30(金) 03:44:05.79ID:oUIG4oIk
最初の実装まではテストいらんよな
・関数Aのテストを書く
・関数Aを書く
・関数Bのテストを書く
・関数Bを書く
・関数Aと関数Bの重複部分を関数Cにリファクタリングするべ
・関数Cのテストを書く
・関数Cを書く
・関数Aのテストを修正←いらんやろ
・関数Aを修正
・関数Bのテストを修正←いらんやろ
・関数Bを修正
0121デフォルトの名無しさん
垢版 |
2023/06/30(金) 04:40:09.64ID:7dyjbNOC
実装にはカオス期と安定期があるからカオス期のテストは無駄
安定期に入ったらテストを書け
0122デフォルトの名無しさん
垢版 |
2023/08/23(水) 00:04:39.70ID:0BjzShXD
「テストを書く」って何?
0124デフォルトの名無しさん
垢版 |
2023/08/23(水) 04:28:20.13ID:0BjzShXD
仕事だとコーディングのことを「書く」とは言わないからな。
0125デフォルトの名無しさん
垢版 |
2023/08/25(金) 01:30:03.89ID:gEfXDtwy
そりゃ頭痛が痛いなんて言わないからな

コードを書くとは言う。
コーディング(コードを書くこと)を書くとは言わない
0128デフォルトの名無しさん
垢版 |
2023/12/06(水) 11:48:46.05ID:oM0gjrfW
全銀システム障害「詳細設計書見落とし」でオーバーフローの痛恨、再発防止なるか
https://xtech.nikkei.com/atcl/nxt/column/18/00001/08680/

やっぱりテスト駆動にしておけば回避出来たよな
0129デフォルトの名無しさん
垢版 |
2023/12/09(土) 15:17:43.26ID:F2smNVkX
>詳細設計書では4種類のテーブルを同時に展開できるだけの作業領域を確保することを求めていたが、プログラマーやレビュアーなどの関係者がいずれもその記述を見落とし、これが上述のオーバーフローを招いたという痛恨のミスだ
>プログラマーやレビュアーなどの関係者がいずれもその記述を見落とし
つまりテスト環境自体が無くてテストしてからって発想が抜け落ちてるのね
0130デフォルトの名無しさん
垢版 |
2024/01/02(火) 22:20:43.54ID:3cCPTdjI
テストケース作るのがしんどいってケースもあるからいつでもテストファーストが良いってことはないわな。
0131デフォルトの名無しさん
垢版 |
2024/01/03(水) 14:18:03.35ID:eQVBZ7Cn
テストの有無とテストファーストの是非を混同してるやつがいるが、
おそらく故意にやってるんだろうな
まあ、釣られてるやつほぼおらんけど
0132デフォルトの名無しさん
垢版 |
2024/01/04(木) 11:26:57.34ID:iR4GsMlV
テストケース作るのがしんどいってテストしないのかよ
顧客のところでバグ炸裂して終了じゃんそんなの
0133デフォルトの名無しさん
垢版 |
2024/01/04(木) 16:14:29.73ID:bd+yebjO
まあ実際全銀でバグ炸裂して終了してるしな
NTTデータがケチる所でもないのに客に本番に近いテスト環境も別途必要ですよって説明してないんだろ
0134デフォルトの名無しさん
垢版 |
2024/01/05(金) 04:49:34.73ID:xFVV62H3
やっぱりプログラムを書き始める前に
テストプログラムを書いておく
これが最強
0135デフォルトの名無しさん
垢版 |
2024/01/10(水) 14:29:25.20ID:Pvv0OiRv
プログラムを書く時は間違えるがテストコードを書く時は間違えない前提
0136デフォルトの名無しさん
垢版 |
2024/01/10(水) 23:00:16.65ID:W4mJO5rQ
テストコードを間違えるか否か以前に、テストケースが抜け落ちるか否かもあるしな
全銀の件は抜け落ちてた話だから、テストファーストでやっても抜け落ちてたから一緒
0137デフォルトの名無しさん
垢版 |
2024/01/11(木) 19:24:45.83ID:1WZH2d+B
根本的な解決策としては
複数人でチェックする
ことかなあ
自分ではなかなか間違いに気が付かないし
自分の間違いが自分で気が付かないのは心理学でなんか名前がついていたような気がする
0138デフォルトの名無しさん
垢版 |
2024/01/12(金) 08:10:20.90ID:JglZpZY+
テストコードを間違いなく漏れなく書ける人がいるならその人がプログラムを書いたらいいだけの話
0139デフォルトの名無しさん
垢版 |
2024/01/12(金) 21:23:36.19ID:+NlTfLsQ
建築とか機械系ではエラーはほとんど起きないんだけどな
なんでソフトウエアだけ?
ちなみに航空機は安全性を考えていると重くなって飛べなくなるので
安全係数が1を切っていると聞いたが
0140デフォルトの名無しさん
垢版 |
2024/01/13(土) 14:43:18.36ID:qyfvMh6P
ライブラリやOSなどの基本ソフトとアプリなどの応用ソフトではまったく状況が違うよ
基本ソフトは大量に配布されて(コピーされて)、頻繁に実行されるので、
最高のエンジニアに作られて、徹底的に検証される(そうされないものは淘汰される)
要するにコスパの問題だよ。1本10万円のゲームで遊びたいかい?
0141デフォルトの名無しさん
垢版 |
2024/01/13(土) 15:00:13.69ID:vTVsKhAm
ソシャゲ課金て月に数十万単位だし
無料のAPEXのスパレジェすら1つにつき5万円だし
10万程度は払うやつなら払うよ
0142デフォルトの名無しさん
垢版 |
2024/01/13(土) 15:07:45.36ID:qyfvMh6P
>>141
Windowsの売上って四半期で何百億ドルといくらしいけど、
ソシャゲとかってそのぐらいの売上になるの?
0143デフォルトの名無しさん
垢版 |
2024/01/13(土) 15:37:46.38ID:8Ttuq2mz
四半期の事なんて知らんが
手間考えたらOS売るなんてアホな商売よりはソシャゲのが儲かるだろうね
0144デフォルトの名無しさん
垢版 |
2024/01/16(火) 04:37:40.68ID:bGp483o/
OS売る商売はLinuxに滅ぼされたからな
早期に見切りをつけてクラウドに移行したMSは先見の明がある
レスを投稿する


ニューススポーツなんでも実況