テストを書いてからリファクタリングなんてのは幻想 (145レス)
1-

1
(7): 2012/10/03(水)00:24 AAS
テストを書いてからリファクタリングするというけれど、
コードの内容によっては、それが現実的に不可能な場合がある。

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

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

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

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

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

にならざるをえない。

コード再配置はテストがない状態で行うから非常に神経を使う。
ミスを起こさないような再配置しかやってはいけない。
46: 2012/10/24(水)09:50 AAS
リファクタリングに必要なのは結局は説得力だからな
「コードの見かけは変わったけどこの機能は変わってません」ということを報らせることができれば妥協、でいいんじゃないか
必須の機能についてのテストが書かれてなかったのなら、そりゃモトモト足りなかったってことで事前に書いとくのがいいだろう
47: 2012/10/24(水)16:51 AAS
オリジナルを作ったときのテストなら信じられるが
後から作ったテストは信用ならないな。
48: 2012/10/24(水)17:07 AAS
>>43
> 新しいコードのテストは書くが
> 古いコードのテストは書かないって
> よく読めばかいてあるよ。

そもそも「レガシーコード」とは、「テストの無いコード」のことであって、それに対して
どう対処していくか、どうテストを書いていけば良いのかが『レガシーコード改善ガイド』なんだけど。

どこをどうよく読んだの?
49: 2012/12/19(水)01:23 AAS
結論から言うと、素人がやる上から下へのベタ書きの方が理解しやすい
50: 2012/12/19(水)11:00 AAS
小規模ならね
51: 2012/12/30(日)00:02 AAS
上から下へのベタ書きが理解しやすいのは
ifとforがほとんどないコードで100行まで。
52: 2013/01/02(水)11:19 AAS
クローズドな黎明期ならCプログラミング診断室のような糞本でも商売が出来た
53: 2013/01/27(日)00:48 AAS
ぶっちゃけテストユニット作ってリファクタリングとかより
仕様理解してクソコードは全捨て&全書き直し
その後、人力デバッグした方が手っ取り早い
54: 2013/01/27(日)00:56 AAS
さんざん言われてるが、どんだけコストをかけるか、かけたコストは回収できるのか、ということでしかないからな
無限の時間と無限のコストと無限の人員と仏の顧客がいるのなら、そりゃあねえ
55: 2013/01/27(日)14:10 AAS
>仕様理解して

テストコード(あるだけましorソース)が仕様書です。(キリッ
56: 2013/01/28(月)11:11 AAS
仕様書はウソをつくがテストコードはウソをつかない
客の目に触れない部分は極力無駄なドキュメントを書かない
57: 2013/01/28(月)13:46 AAS
仕様書の厚さが請求金額に比例します!(キリッ
58: 2013/02/06(水)22:51 AAS
                       ヘ(^o^)ヘ いいぜ
                         |∧  
                     /  /
                 (^o^)/ てめえが何でも
                /(  )    思い通りに出来るってなら
       (^o^) 三  / / >
 \     (\\ 三
 (/o^)  < \ 三 
 ( /
 / く  まずはそのふざけた
       幻想をぶち殺す

スレタイみたら、このAA貼られまくってんだろうな、と思っていたんだが…
59: ◆ahSvoMzzMtg3 2013/06/15(土)23:55 AAS
そげぶ
60: 2014/02/27(木)22:28 AAS
設計せずにテスト書くから>>1みたいになるんだろ
61: 2014/03/01(土)05:02 AAS
「テスト」って「とりあえず作ってみる」ってことで合ってる?
62: 2014/03/01(土)05:43 AAS
合ってない
63: 2014/03/02(日)10:27 AAS
じゃぁなんだよ
64: 2014/03/02(日)11:48 AAS
COBOLの悲劇史を繰り返さないための手段であって
TESTでバグ出しするのは副次的な作業なんだけどな
仕様書や設計書に出てこない後から外から見るとナゾな挙動を説明するための
65: 2014/03/04(火)02:47 AAS
テストって結局何よ?
66: 2014/03/04(火)11:53 AAS
Test存在意義がわからない
Testの為に機能を細切れにするの嫌だ
プロジェクトとTestの親和性に問題がある

そんな主張をするヤツを効率的に排除するツール
67: 忍法帖【Lv=7,xxxP】(1+0:5) 2014/03/06(木)16:46 AAS
'
てすと
68: 2014/03/07(金)22:19 AAS
テスト開発駆動
69: 2014/03/10(月)17:37 AAS
きっちり設計していればテストは不要
70: 2014/03/10(月)18:43 AAS
自動化できる部分を自動化できることをきっちりという
71: 忍法帖【Lv=10,xxTP】(2+0:5) 2014/05/24(土)00:41 ID:cnUjpUj/(1)調 AAS
テスト
72: 2014/07/29(火)23:13 ID:Lzz8ZlFD(1)調 AAS
テストドリブンって生産性悪いよな?
73: 2014/07/30(水)11:48 ID:X0HdXrVF(1)調 AAS
コード量の生産性は悪い
中長期的および小中規模における保守改良を含めると生産性は結果的に高くなる

それだけの話
一人で書く・短期で書く・大人数で分担製作する・顔も知らない人が長期保守する等の場合は大きな障害になりうる
そういうプログラミングしかしないのなら最終証明書的なテスト以外はやらないほうがいいことが多い
74: 2014/10/25(土)15:43 ID:2HGeWB2j(1)調 AAS
>一人で書く・短期で書く・大人数で分担製作する・顔も知らない人が長期保守する等の場合は

どこかの警視庁プロファイリングを思い出した
75: 2014/11/08(土)14:04 ID:UfN+T2xC(1)調 AAS
設計できるレベルのエンジニアが少ないのでしかたない
76: 2014/12/02(火)21:54 ID:Emi9Jogj(1)調 AAS
テスト ドリチン
77: 2014/12/07(日)09:17 ID:Y58/hvmd(1)調 AAS
1 デフォルトの名無しさん sage 2012/10/03(水) 00:24:26.88
テストを書いてからリファクタリングするというけれど

テストとリファクタリングは関係無くね?
78: 2014/12/17(水)21:46 ID:KocJU1bl(1)調 AAS
アホには関係
79: 2015/02/14(土)07:54 ID:SarccncW(1)調 AAS
>>1 は正しい指摘をしてるのに

知識もない奴が難癖つけて
糞スレにしてしまった
悲しいことですね
80
(1): 2015/02/14(土)10:03 ID:5BqTjtvr(1)調 AAS
>テストを書いてからリファクタリングするというけれど

どこでそんなこと言われてるんだよ
81: 2015/02/21(土)05:55 ID:RdZxGcLP(1)調 AAS
てすてす。
82
(1): 2015/02/24(火)06:35 ID:xl3zgpOz(1)調 AAS
>>80
世のあちこちで

テスト書かなかったら動作が変わってないってどうやって保証すんのさ
83: 2015/03/10(火)22:04 ID:dg/tj86w(1)調 AAS
てすと
84
(1): 2015/03/29(日)23:25 ID:n/vW8Ca/(1)調 AAS
>>82
仕様書に決まってるでしょ
テストなんてのは仕様書に従っていることを部分的に検査するだけで
完全性を保証するものじゃない
85: 2015/04/05(日)11:08 ID:ZSoXTOOk(1)調 AAS
うんこ
86: 2015/04/15(水)21:28 ID:OQHnBd+X(1)調 AAS
>>84
元々テストってそういうもんだよ
少なくともテスト書いた部分は変わってないと確認出来るだけ

仕様書で確認するのはいいけど、仕様書通りに動いてるのをどうやって証明するの?
87: 2015/05/04(月)11:40 ID:Brvnrtbf(1)調 AAS
テストする
88: 2015/06/30(火)00:28 ID:Sh+nk1gx(1)調 AAS
もう仕様書の代わりにテストを上から提出してもらえばいいんじゃね?
89: 2015/07/19(日)08:54 ID:rizf9cO8(1)調 AAS
「テスト仕様書を下さい。でないと作れません」
90: 2015/10/06(火)17:42 ID:ZA2UYVtv(1)調 AAS
                       ヘ(^o^)ヘ いいぜ
                         |∧  
                     /  /
                 (^o^)/ テストを書いてから
                /(  )    リファクタリング出来るってなら
       (^o^) 三  / / >
 \     (\\ 三
 (/o^)  < \ 三 
 ( /
 / く  まずはそのふざけた
       幻想をぶち殺す
91: 2015/10/24(土)07:59 ID:Ir698C46(1)調 AAS
まず幻想なのは
テストを書いてからやれば全て問題無いとは誰も言ってないのに
そう勘違いしていまった>>1の思考
92: 2015/10/28(水)21:55 ID:en6I5N16(1)調 AAS
そげぶ
93: 2015/10/31(土)20:40 ID:MdiIPwHq(1)調 AAS
そもそもファウラーのリファクタリングは読んだの?
テストしてないのにコードいじっちゃったらその時点でリファクタリングじゃナイよ?
94: 2015/11/01(日)09:19 ID:qqj1vZuH(1)調 AAS
とバカが何か言っております
バカほど自分の妄想を普遍的な事実のように語る
95: 2015/11/01(日)11:24 ID:e7+SbRee(1)調 AAS
ただのコード整理のことをリファクタリングと呼んでるなら別にそれでもいいけどね
96: 2016/01/21(木)12:50 ID:FLUZJlG7(1)調 AAS
ふむ
97: 2016/01/27(水)22:08 ID:1zcp8qcT(1)調 AAS
コード整理はリファクタリングの主要な一種だなあ
98: 2016/01/29(金)01:36 ID:3QXtNRWh(1)調 AAS
振る舞いが変わってないのを証明出来るならどの手法でもリファクタリングを名乗っていいよ
99: 2016/02/03(水)18:22 ID:mmJ5x1I8(1)調 AAS
つまりこの世にリファクタリングは存在しない
100: 2016/02/07(日)15:40 ID:Y5xiZodX(1)調 AAS
部分的には出来る
101: 2016/02/14(日)20:20 ID:9UaM9+lc(1)調 AAS
リファクタリングしたらお金貰えますか?
102: 2016/05/20(金)20:00 ID:e1TBDqG+(1)調 AAS
リファクタリングしたらお金もらえる契約だった貰えます
103: 2016/05/21(土)12:44 ID:JO+/Ov64(1)調 AAS
私のリファクタリングおじさんが匿名で銀行にお金を振り込んでくれるよ
104: 2017/02/28(火)07:59 ID:K7hLR7oh(1)調 AAS
俺の全力120%リファクタリングを見せるときが来たようだな
105: 2018/04/22(日)21:49 ID:PsQCMKRd(1)調 AAS
フッ、その程度の力で俺のテストファーストを破れると思うなよ
106: 2018/04/23(月)13:16 ID:8zXr1SIe(1)調 AAS
>>1
一理あるな。
あんまり初心者のだとこのコードのテスト書く意味とは…ってなる。
つまりテスト書く前に直しが入る。
107: 2018/05/23(水)19:41 ID:Au5e7VGg(1)調 AAS
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

VZCU5
108: 2018/07/05(木)01:50 ID:RfoszcD2(1)調 AAS
6L4
109: 2020/01/29(水)13:51 ID:MZiWsP4Y(1)調 AAS
修正ついでにリファクタリングしたけど、機能は変えてないからテストしなくて良いよね
110: 2022/04/22(金)14:27 ID:+Ag0wcTG(1)調 AAS
てst
111: あぼーん [あぼーん] AAS
あぼーん
112: 2022/06/10(金)07:54 ID:7BMdU4Yn(1)調 AAS
あっそ
113: 2023/06/06(火)22:29 ID:jiKuTUOv(1)調 AAS
>>1
「テストを書く」の意味がわからない。
114: 2023/06/28(水)13:43 ID:BVdlIcNn(1)調 AAS
漠∞!!!!
列∞!!!!!
廷∞!!!!!!
器∞!!!!!!!
斗∞!!!!!!!!
容∞!!!!!!!!!
寿∞!!!!!!!!!!
非∞!!!!!!!!!!!
115: 2023/06/28(水)17:23 ID:ePd0oqZH(1/2)調 AAS
TDDは設計変更がそうそう起きない場合にしか現実的じゃないわな
外部ツールやらドメインやらの知識が更新されたり、仕様変更が起きると
それに伴う設計変更が起きて、同時にテストも直さなきゃならなくなる
無思慮にテストファーストがいいって言ってるやつは信用ならん
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
全銀システム障害「詳細設計書見落とし」でオーバーフローの痛恨、再発防止なるか
https://xtech.nikkei.com/atcl/nxt/column/18/00001/08680/

やっぱりテスト駆動にしておけば回避出来たよな
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-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.685s*