リファクタリングすると全部テストしろと言ってくる奴の矛盾3

■ このスレッドは過去ログ倉庫に格納されています
2018/10/29(月) 19:39:29.27
機能追加や変更した時に、全部テストしてるでしょ?
いつもやってることじゃん

よくある応答のパターン

1. 必要もないのにリファクタリングを勝手にやるな
⇒ 客などから修正を要求するときに行うので、勝手にやることはありません

2. 修正の指示は出したがリファクタリングの指示は出してない
⇒ 修正工程の一つに含まれる作業なので修正と分離することは不可能です

3. リファクタリングすると動きが変わるだろ
⇒ 動きを変えないのがリファクタリングです

4. リファクタリングしたら全部テストしなきゃならないだろ
⇒ 修正しろと客などから言われたんだから修正するしか無い
どちらにしろ全部テストするんだろう?


前スレ
リファクタリングすると全部テストしろと言ってくる奴の矛盾2
https://medaka.5ch.net/test/read.cgi/prog/1526720757/
2018/10/30(火) 00:34:02.46
え?でもやっぱり今回の改修で他の機能までバグるのはおかしいですよね?

共通ルーチン?
なんで分けて改修しないんですか?
テスト全部やり直してくださいよ

もう一回やったら訴えますよ

これが現実
震えて眠れ
2018/10/30(火) 01:30:02.07
> 共通ルーチン?
> なんで分けて改修しないんですか?

分けて二箇所改修する意味は?
2018/10/30(火) 01:31:48.92
え?でもやっぱり今回の改修でバグは治ったんじゃないんですか?テストしたんですよね?

テストはした箇所は治っていました。ですが似たような箇所で同じような計算をしていて
そちらは治っていませんでした。軽く検査した所、同じような計算が10箇所ありましたので
その改修とテストに今回の10倍の時間と費用がかります。
2018/10/30(火) 01:31:54.29
>>3
片方は問題ねーから
2018/10/30(火) 01:34:55.63
なんで共通化しないんですか?


それはね。あなたから開発費をせしめるためですよ


 
2018/10/30(火) 01:35:30.51
>>5
共通ルーチン使っていて、片方は問題ないなんてありえないよ
どういう場合にそうなるんだよw
2018/10/30(火) 01:57:05.61
片方問題がなかったら、それはもう設計時点の問題だな
違う処理であるべきなのに、同じ処理にしてしまったんだから
2018/10/30(火) 06:54:44.63
>>7
え?想像力がたりなさすぎない?

一つは精度が必要なときとかfloatで十分、doubleでないとダメ
条件が特定のルーチンしか通らないとか

いくらでもあるぜ
お前一つも浮かばなかったの?
プログラマやめちゃえよ
設計なんか語るレベルにないじゃん
2018/10/30(火) 07:38:48.78
> 一つは精度が必要なときとかfloatで十分、doubleでないとダメ

修正内容が「精度を上げたい」なら共通関数を変更するべきだが、
「一箇所だけ精度を上げたい」ならば、そのときに分ければいいの

おかしいでしょ?精度を上げたい箇所を明確にしないまま作業するなんて
まず先に精度を上げたい場所がどこかが決まる。

そしてそれはリファクタリングではなくて単なる仕様変更
一箇所だけ精度をえるという仕様変更

その違いもわからないなら、プログラマやめたほうがいいよ
2018/10/30(火) 07:43:42.21
>>9
> 条件が特定のルーチンしか通らないとか

設計が破綻してる

func() { A処理 and B処理 } があって?
一つは、A処理 B処理 両方通って
もう一つが A処理 のみしか通らないなら

func 内部で条件フラグとかで分けるんじゃなくて
呼び出し側で、A処理を行うA() と B処理を行うB() を呼び出す
もう一つは、A処理を行うA() のみを呼び出すの

クソコードによくある。長い関数でグダグダやっていて
特定の場合だけ処理を分けたいから、フラグを追加してフラグみて
片方だけ実行とかね。ほんとコレ、クソコード
2018/10/30(火) 08:00:14.00
>>9
> 条件が特定のルーチンしか通らないとか
そもそも言ってることがおかしくない?

func() { Aルーチン and Bルーチン } があって条件が特定のルーチンしか通らないんでしょ?
片方は Aルーチン と Bルーチンの 両方を通る。もう片方はAルーチンのみを通るということだ

修正箇所がBルーチンなら片方は修正されるし、もう片方はそもそも通らないのだから関係ない話

だからAルーチンが修正箇所ということになるが、
「条件が特定のルーチンしか通らない」とはどういうことだ?
両方共、修正箇所のAルーチンを通ってるではないか?
2018/10/30(火) 08:02:02.33
一言で言うならば共通関数の中に、
AルーチンとかBルーチンのようなエリアができてる時点でクソ
2018/10/30(火) 08:15:30.49
「精度上げてっていったのに上がってないんだけど?」

この関数は上げましたよ?でも他の部分がfloatのままなので
他に渡すときにfloatに変換されますねぇ
他の部分を変更しろとは言われてないしーwww
2018/10/30(火) 08:15:55.30
>>13
それな
2018/10/30(火) 21:26:03.00
たいていけんか腰のやつって中身のない議論するんだよなあ
2018/10/31(水) 00:33:03.79
>>13
これに尽きる
2018/10/31(水) 05:16:08.64
共通関数があるとしてfloatかdoubleにコードを統一できないなら
単にfloat版とdouble版の関数を作るだけだろ

例えばこんな感じに

https://linuxjm.osdn.jp/html/LDP_man-pages/man3/clog10.3.html
> double complex clog10(double complex z);
> float complex clog10f(float complex z);
> long double complex clog10l(long double complex z);
>
> 他の関数は同じ機能を持つ float 版と long double 版である。

何かを修正するのと、新しく精度違う版が必要になった(機能追加)のを
ごっちゃにするんじゃねーよ
2018/10/31(水) 07:15:32.13
>>18
じゃあ、そういう修正が入っても既存は一切いじらないって主張でいいんだよね?
2018/10/31(水) 17:14:17.74
>>19
まず「そういう修正」の中身を明らかにしようか?

floatをdoubleに変えるのは"仕様変更"である
リファクタリングは仕様を変えないものなのだから
仕様を変えると言っている以上、これはリファクタリングではない

リファクタリングなら当然既存を修正する
繰り返すが、既存を修正する

お前が言ってる「そういう修正」の中身は
「他の処理は変えずに一部分だけ精度を上げるという仕様変更のための修正」だ
2018/10/31(水) 17:20:06.36
え?でもやっぱり今回の改修で他の機能までバグるのはおかしいですよね?

リファクタリングもしたからバグったって?

いやいや、リファクタリングをは動きを変えないものだから
それでバグるわけ無いでしょ?

改修内容を間違えたんですよね。一部分だけ修正しろと言ったのに
全部修正したんですよね?リファクタリングのせいにしないでください

もう一回うそついたら訴えますよ

これが現実
震えて眠れ
2018/10/31(水) 17:25:09.87
>>21
まあ、人間である以上いじったらバグる可能性は残るんだよ
君は信用できない
2018/10/31(水) 17:28:45.81
ウチとエンドの客の受入れ試験のお金も君が出してくれるならその範囲を変更してもいいよ
って普通に言われるだろ
仕事はお前だけが回してるわけじゃない
小さい会社でばっかり組んでるとヤバイな
2018/10/31(水) 18:01:35.14
>>23
修正する以上、テストするだろ?
リファクタリングは修正に関する部分しかしないんだから
テストの工数はすでに計上済み
2018/10/31(水) 18:02:20.54
>>22
> まあ、人間である以上いじったらバグる可能性は残るんだよ

だから修正範囲のテストをするんですよね?
それとも修正をするなと?
客から言われてるのに?
2018/10/31(水) 18:17:28.96
>>25
え?だからお前のはいらんとこに手を広げて関係ない機能まで修正入るんだろ?
共通処理使ってるからって理由だけで
2018/10/31(水) 18:25:28.78
>>26
何度も言うが、リファクタリングは動きを変えないものなんだから
共通処理を変えた所で動きは変わらない

修正内容が共通処理部分なんだろ?
ならリファクタリングしなかったとしても共通処理を修正するだろ
ということでここからはリファクタリングとは関係ない話だぞ


なら共通処理を修正するなら、テストもするわけだ
共通処理をコピーしたとしても、テストの数は変わらない
俺はあたり前のことしか言ってないぞ
2018/10/31(水) 18:28:04.96
リファクタリングといいながら、リファクタリングとは
関係ない話ばっかりしてるんだもんなぁw
あきれるよ。


単に共通処理を修正(仕様変更)する時、
コピーして修正(仕様変更)するか
コピーせずに修正(仕様変更)するの話じゃんか
2018/10/31(水) 18:36:42.44
>>27
動き同じでも触ったらテストするんだよ
おk?
2018/10/31(水) 18:36:50.17
今回の修正で共通処理をいじったんだな?
ちゃんと共通処理のテストをしたのか?

共通処理の中は、エリアが2つに分かれていて、
今回の修正で影響がある部分はテストしました

どういう意味だ?

今回のテストは共通処理の中のエリアBを通りますが、
他の部分からエリアBを通る部分はないはずです。
だから他の部分は影響がないはずです。

だから共通処理を修正しましたが、共通処理自体のテストはしてません
今回の修正内容に関する部分だけテストしました。


テストやり直しな
2018/10/31(水) 18:37:51.23
>>29
> 動き同じでも触ったらテストするんだよ

そこは今回の修正対象ですよね?
なら最初からテストするに決まってるじゃないですかw
2018/10/31(水) 18:38:14.72
>>27
動きが同じってどこまで?
メモリの使い方も同じなの?
2018/10/31(水) 18:39:16.81
>>31
いいや
お前のはやらなくていい範囲まで手を出してるよね?
2018/10/31(水) 18:40:19.27
>>33
やらなくて良い範囲は手を出しませんよ?
何いってんの?

今回の修正する範囲、テストする範囲しか
リファクタリングしませんwww
2018/10/31(水) 18:41:32.14
>>33
まさか、共通処理を修正しているくせに
共通処理の一部分は通らないはずだから
テストしなくていいとか言ってんの?www
2018/10/31(水) 18:43:55.61
>>32
> メモリの使い方も同じなの?

メモリの使い方が仕様に明記されてるならその通りでしょうね
(明記されてないなら何が正しいかも決められないわけで、
正しいことをテストできない)
2018/10/31(水) 19:25:29.91
>>35
だから俺はしない
分離しちゃう
リファクタリングなんてソースの修正範囲を広げる愚行などもってのほかだ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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