テストを書いてからリファクタリングなんてのは幻想
テストを書いてからリファクタリングするというけれど、
コードの内容によっては、それが現実的に不可能な場合がある。
汚いコードであればあるほど、リファクタリングの前に
テストを書くのは難しくなる。
テストが書けるのは、単機能の関数になっているものだけ。
1000行以上からなる複数の処理を行う関数などテストを先に書くなんてまず不可能。
テストを書くためには、コードの再配置を先にやらなくてはいけない。
コードの順番を変えたりモジュールに分離するなどして、小さな処理にまとめて関数化する。
そこまでやってやっとテストが書ける。
現実的な修正の順番としては
コード再配置 → テストコード記述 → リファクタリング
にならざるをえない。
コード再配置はテストがない状態で行うから非常に神経を使う。
ミスを起こさないような再配置しかやってはいけない。 ただのコード整理のことをリファクタリングと呼んでるなら別にそれでもいいけどね 振る舞いが変わってないのを証明出来るならどの手法でもリファクタリングを名乗っていいよ リファクタリングしたらお金もらえる契約だった貰えます 私のリファクタリングおじさんが匿名で銀行にお金を振り込んでくれるよ 俺の全力120%リファクタリングを見せるときが来たようだな フッ、その程度の力で俺のテストファーストを破れると思うなよ >>1
一理あるな。
あんまり初心者のだとこのコードのテスト書く意味とは…ってなる。
つまりテスト書く前に直しが入る。 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
VZCU5 修正ついでにリファクタリングしたけど、機能は変えてないからテストしなくて良いよね 漠∞!!!!
列∞!!!!!
廷∞!!!!!!
器∞!!!!!!!
斗∞!!!!!!!!
容∞!!!!!!!!!
寿∞!!!!!!!!!!
非∞!!!!!!!!!!! TDDは設計変更がそうそう起きない場合にしか現実的じゃないわな
外部ツールやらドメインやらの知識が更新されたり、仕様変更が起きると
それに伴う設計変更が起きて、同時にテストも直さなきゃならなくなる
無思慮にテストファーストがいいって言ってるやつは信用ならん 自動テストは無理かも知らんが、
ある程度この種の仕様テストは通すってのは用意しなきゃいかんでしょ。 なんか話が噛み合ってないな
テストを用意するのは当たり前、その上でテストファーストの是非を問うスレじゃないのか テスト書いたほうが実装は楽
むしろテストお陰で実装の質を上げられる
リファクタリングも同じ クソ実装に合わせたテストコードなんてリファクタリングしたら無駄になるやろ 最初の実装まではテストいらんよな
・関数Aのテストを書く
・関数Aを書く
・関数Bのテストを書く
・関数Bを書く
・関数Aと関数Bの重複部分を関数Cにリファクタリングするべ
・関数Cのテストを書く
・関数Cを書く
・関数Aのテストを修正←いらんやろ
・関数Aを修正
・関数Bのテストを修正←いらんやろ
・関数Bを修正 実装にはカオス期と安定期があるからカオス期のテストは無駄
安定期に入ったらテストを書け >>122
このスレの文脈ではユニットテストのソースコードを書くという意味では? 仕事だとコーディングのことを「書く」とは言わないからな。 そりゃ頭痛が痛いなんて言わないからな
コードを書くとは言う。
コーディング(コードを書くこと)を書くとは言わない 全銀システム障害「詳細設計書見落とし」でオーバーフローの痛恨、再発防止なるか
https://xtech.nikkei.com/atcl/nxt/column/18/00001/08680/
やっぱりテスト駆動にしておけば回避出来たよな >詳細設計書では4種類のテーブルを同時に展開できるだけの作業領域を確保することを求めていたが、プログラマーやレビュアーなどの関係者がいずれもその記述を見落とし、これが上述のオーバーフローを招いたという痛恨のミスだ
>プログラマーやレビュアーなどの関係者がいずれもその記述を見落とし
つまりテスト環境自体が無くてテストしてからって発想が抜け落ちてるのね テストケース作るのがしんどいってケースもあるからいつでもテストファーストが良いってことはないわな。 テストの有無とテストファーストの是非を混同してるやつがいるが、
おそらく故意にやってるんだろうな
まあ、釣られてるやつほぼおらんけど テストケース作るのがしんどいってテストしないのかよ
顧客のところでバグ炸裂して終了じゃんそんなの まあ実際全銀でバグ炸裂して終了してるしな
NTTデータがケチる所でもないのに客に本番に近いテスト環境も別途必要ですよって説明してないんだろ やっぱりプログラムを書き始める前に
テストプログラムを書いておく
これが最強 プログラムを書く時は間違えるがテストコードを書く時は間違えない前提 テストコードを間違えるか否か以前に、テストケースが抜け落ちるか否かもあるしな
全銀の件は抜け落ちてた話だから、テストファーストでやっても抜け落ちてたから一緒 根本的な解決策としては
複数人でチェックする
ことかなあ
自分ではなかなか間違いに気が付かないし
自分の間違いが自分で気が付かないのは心理学でなんか名前がついていたような気がする テストコードを間違いなく漏れなく書ける人がいるならその人がプログラムを書いたらいいだけの話 建築とか機械系ではエラーはほとんど起きないんだけどな
なんでソフトウエアだけ?
ちなみに航空機は安全性を考えていると重くなって飛べなくなるので
安全係数が1を切っていると聞いたが ライブラリやOSなどの基本ソフトとアプリなどの応用ソフトではまったく状況が違うよ
基本ソフトは大量に配布されて(コピーされて)、頻繁に実行されるので、
最高のエンジニアに作られて、徹底的に検証される(そうされないものは淘汰される)
要するにコスパの問題だよ。1本10万円のゲームで遊びたいかい? ソシャゲ課金て月に数十万単位だし
無料のAPEXのスパレジェすら1つにつき5万円だし
10万程度は払うやつなら払うよ >>141
Windowsの売上って四半期で何百億ドルといくらしいけど、
ソシャゲとかってそのぐらいの売上になるの? 四半期の事なんて知らんが
手間考えたらOS売るなんてアホな商売よりはソシャゲのが儲かるだろうね OS売る商売はLinuxに滅ぼされたからな
早期に見切りをつけてクラウドに移行したMSは先見の明がある