機能追加や変更した時に、全部テストしてるでしょ?
いつもやってることじゃん
リファクタリングすると全部テストしろと言ってくるやつの矛盾
■ このスレッドは過去ログ倉庫に格納されています
2018/04/15(日) 13:13:44.63
494仕様書無しさん
2018/04/22(日) 22:11:13.87 リファクタリングしようがしまいが、
現状のコードが複雑なら解析に時間がかかるので、
あとはその解析結果をコードに反映して次回はもちろんのこと
今回のレビューやエンバグした時の修正を楽にするか
今のままより複雑にして大変にするかの違いなんだよな
そんなに複雑じゃないならリファクタリングも大したことない
すごく複雑なら、それリファクタリングしないと近い内に苦労するよってこと
こまめなリファクタリングが重要
100%完璧にしろなんて言ってない。修正する前よりも良くなっていればいい
現状のコードが複雑なら解析に時間がかかるので、
あとはその解析結果をコードに反映して次回はもちろんのこと
今回のレビューやエンバグした時の修正を楽にするか
今のままより複雑にして大変にするかの違いなんだよな
そんなに複雑じゃないならリファクタリングも大したことない
すごく複雑なら、それリファクタリングしないと近い内に苦労するよってこと
こまめなリファクタリングが重要
100%完璧にしろなんて言ってない。修正する前よりも良くなっていればいい
497仕様書無しさん
2018/04/22(日) 22:34:53.57 指摘内容に反論してるのが、>>491の内容でしょw
つ〜か「間違ってる」というだけじゃ
それは指摘じゃない。
地球が太陽の周りを回ってるのは間違いなんだ!
って言っても、それは指摘じゃないのと同じこと
つ〜か「間違ってる」というだけじゃ
それは指摘じゃない。
地球が太陽の周りを回ってるのは間違いなんだ!
って言っても、それは指摘じゃないのと同じこと
498仕様書無しさん
2018/04/22(日) 22:44:53.89 ちゃんと設計して作成、改修してるのにリファクタリングが必要になるのは何故?
なんかすでにおかしくね?
つまり、リファクタリングっていうのは設計が腐ってるから発生した不具合ってことだよね
なんかすでにおかしくね?
つまり、リファクタリングっていうのは設計が腐ってるから発生した不具合ってことだよね
499仕様書無しさん
2018/04/22(日) 22:49:24.59 頭がばぐってる奴のこじつけ論にトラウマがある
最初から最後まで自分の主観から一歩も出ていない
立場をかさにきてるだけ
バットで頭なぐるか車でひき殺すかしたい
最初から最後まで自分の主観から一歩も出ていない
立場をかさにきてるだけ
バットで頭なぐるか車でひき殺すかしたい
500仕様書無しさん
2018/04/22(日) 22:55:32.38 そこからわからないのか?
客が仕様変更しないとでも思ってるのかな?
状況は刻々変わってるし、やってみなければわからないこともある
20年以上前のアプリがクラウド対応の設計していたらびっくりだわ
ソフトウェアは同じものを作ることはなく、はじめての道ばかりなんだから
軌道修正しながら進むしかないんだよ。
その軌道修正っていうのがリファクタリングでもある。
客が仕様変更しないとでも思ってるのかな?
状況は刻々変わってるし、やってみなければわからないこともある
20年以上前のアプリがクラウド対応の設計していたらびっくりだわ
ソフトウェアは同じものを作ることはなく、はじめての道ばかりなんだから
軌道修正しながら進むしかないんだよ。
その軌道修正っていうのがリファクタリングでもある。
502仕様書無しさん
2018/04/22(日) 23:02:28.12 「リファクタリングは効率的」とは
いわないな。言葉の使い方が変だ
リファクタリングは効果的ならわかるが
いわないな。言葉の使い方が変だ
リファクタリングは効果的ならわかるが
503仕様書無しさん
2018/04/22(日) 23:05:14.75 開発中のコードなのにテストコードのカバレッジを100%してリファクタリングするバカ
505仕様書無しさん
2018/04/22(日) 23:55:15.44 設計ミスなどない
506仕様書無しさん
2018/04/22(日) 23:58:31.24 >>503
テストコードのテスト?
テストコードのテスト?
508仕様書無しさん
2018/04/23(月) 00:12:15.78 後出しで変化した状況に対応するにはやったほうがいいこともある
ふくらんだクラスを分割して平行作業したり
後から出てきた概念と名前を調整したり
既存コードに手を入れなくても機能拡張できるようにしたり
ふくらんだクラスを分割して平行作業したり
後から出てきた概念と名前を調整したり
既存コードに手を入れなくても機能拡張できるようにしたり
511KAC
2018/04/23(月) 00:49:44.07512仕様書無しさん
2018/04/23(月) 01:09:41.41 この程度のことを金にできない奴隷PGたち
よっぽど信頼されていないんだなw
よっぽど信頼されていないんだなw
513仕様書無しさん
2018/04/23(月) 01:34:52.95514仕様書無しさん
2018/04/23(月) 02:17:31.75 日本の場合はリファクタリングではなく、システムを作り替えるタイミングがリファクタリングにあたる。
外国人は新しいバグを埋め込んだり、仕様が変わってしまっても気にしない文化だから、日本人の感覚とは合わない。
外国人は新しいバグを埋め込んだり、仕様が変わってしまっても気にしない文化だから、日本人の感覚とは合わない。
517仕様書無しさん
2018/04/23(月) 07:49:11.35 リファクタ箇所が限定されてりゃ少量のテストでカバーできるだろ
519仕様書無しさん
2018/04/23(月) 09:45:42.62 >>514
> 日本の場合はリファクタリングではなく、システムを作り替えるタイミングがリファクタリングにあたる。
それは仕様がすべて文章化されていればな
実際はそんなこと不可能だし
変更した以上デグレは覚悟しなければならない
> 日本の場合はリファクタリングではなく、システムを作り替えるタイミングがリファクタリングにあたる。
それは仕様がすべて文章化されていればな
実際はそんなこと不可能だし
変更した以上デグレは覚悟しなければならない
521仕様書無しさん
2018/04/23(月) 09:54:57.20 >>514
一瞬システムリプレースの事だと勘違いするから、改修とか修正って単語使って欲しい
んで、何度も言うように、少なくともリファクタリングの時点でテストはされるし、バグがリファクタリング起因でない事は(メモリ起因やテスト自体の不備を除けば)確実だ、としておく。
なんで、外国人、日本人の下りは何かがおかしい
一瞬システムリプレースの事だと勘違いするから、改修とか修正って単語使って欲しい
んで、何度も言うように、少なくともリファクタリングの時点でテストはされるし、バグがリファクタリング起因でない事は(メモリ起因やテスト自体の不備を除けば)確実だ、としておく。
なんで、外国人、日本人の下りは何かがおかしい
522仕様書無しさん
2018/04/23(月) 10:53:40.38 仮にソースが仕様であるならば、バグは1つもないことになる
523仕様書無しさん
2018/04/23(月) 12:08:46.41 関数の中のロジックの一部を他の関数に切り出して、カバレッジ100%のユニットテストで元のテストの
外部的振る舞いが変わってないことを確認して満足してた奴がリファクタリング起因の障害を発生させてたわw
外部的振る舞いが変わってないことを確認して満足してた奴がリファクタリング起因の障害を発生させてたわw
524仕様書無しさん
2018/04/23(月) 13:27:15.16 テストコード自体の不備に関してはどうしようもないからな
ただそれに関しちゃ、手動テストでも同じことが言えるからどっちもどっち。
ただそれに関しちゃ、手動テストでも同じことが言えるからどっちもどっち。
525仕様書無しさん
2018/04/23(月) 14:56:45.98 >>524
手動でもテストコードはあるんだが?
手動でもテストコードはあるんだが?
526仕様書無しさん
2018/04/23(月) 17:34:25.51 リファクタリングしなければ不具合は発生しない
527仕様書無しさん
2018/04/23(月) 19:31:15.43 ここまで技術的な話題ゼロ
オワットルなジャップ
オワットルなジャップ
528仕様書無しさん
2018/04/23(月) 20:11:50.92 ソフトウエアの問題は
それがどれほど技術的に見えようとも
結局は人間の問題である
と偉い人が言ってた
それがどれほど技術的に見えようとも
結局は人間の問題である
と偉い人が言ってた
529仕様書無しさん
2018/04/23(月) 21:31:15.36 コードがださいからリファクタしたい
気が滅入る
気が滅入る
530仕様書無しさん
2018/04/23(月) 21:37:25.89531仕様書無しさん
2018/04/23(月) 21:38:22.86533仕様書無しさん
2018/04/23(月) 22:01:01.53 結局リファクタの成否は
客を丸め込んでデグレのリスクを飲ませられるかにかかってる気がしてきた
バージョンアップとかスピードアップとかなんかこじつけて
リファクタでデグレたら原因も無理やりそこに倒す
客を丸め込んでデグレのリスクを飲ませられるかにかかってる気がしてきた
バージョンアップとかスピードアップとかなんかこじつけて
リファクタでデグレたら原因も無理やりそこに倒す
534仕様書無しさん
2018/04/23(月) 22:09:44.65 その前に正しい知識が必要だけどな。
リファクタリングは効果的、これを開発社側が
正しく理解してないと、現状のコードの問題を
リファクタリングのせいにしてしまう。
リファクタリングは効果的、これを開発社側が
正しく理解してないと、現状のコードの問題を
リファクタリングのせいにしてしまう。
535仕様書無しさん
2018/04/23(月) 22:10:30.68 現状のコードの問題ってのは、例えば
仕様もテストコードもないんだが?とかそういうのなw
仕様もテストコードもないんだが?とかそういうのなw
537仕様書無しさん
2018/04/23(月) 22:16:20.23 開発中なのにユニットテストでプロダクションコードをガチガチに硬直化させるアホ
538仕様書無しさん
2018/04/23(月) 22:16:42.65 なにか問題でも?
開発側が楽になれば、それは顧客にとってメリットしかないよね?
開発側が楽になれば、それは顧客にとってメリットしかないよね?
539仕様書無しさん
2018/04/23(月) 22:17:49.19541仕様書無しさん
2018/04/23(月) 22:24:43.47 >>540
なんでユニットテストを修正してはいけないと思ってるんだ?
リファクタリングでユニットテスト修正するだろ。
というだけじゃ意味が分からんのだろうな
テストは修正しないって言ったじゃないですか!って言いそうw
リファクタリングはテストに通るように修正するのであって、
それさえ守れば、テスト自体の修正もする。
テストのリファクタリングなんて言葉もある。
説明がほしいか?
なんでユニットテストを修正してはいけないと思ってるんだ?
リファクタリングでユニットテスト修正するだろ。
というだけじゃ意味が分からんのだろうな
テストは修正しないって言ったじゃないですか!って言いそうw
リファクタリングはテストに通るように修正するのであって、
それさえ守れば、テスト自体の修正もする。
テストのリファクタリングなんて言葉もある。
説明がほしいか?
542仕様書無しさん
2018/04/23(月) 22:26:59.68 まあここらへんだな。お前がユニットテストを壊さなきゃできないと
勘違いしているリファクタリングだ
新装版 リファクタリング 既存のコードを安全に改善する
http://shop.ohmsha.co.jp/shopdetail/000000003881/
第6章 メソッドの構成
メソッドの抽出
メソッドのインライン化
一時変数のインライン化
問い合せによる一時変数の置き換え
説明用変数の導入
一時変数の分離
パラメータへの代入の除去
メソッドオブジェクトによるメソッドの置き換え
アルゴリズムの取り替え
第7章 オブジェクト間での特性の移動
メソッドの移動
フィールドの移動
クラスの抽出
クラスのインライン化
委譲の隠蔽
仲介人の除去
外部メソッドの導入
局所的拡張の導入
勘違いしているリファクタリングだ
新装版 リファクタリング 既存のコードを安全に改善する
http://shop.ohmsha.co.jp/shopdetail/000000003881/
第6章 メソッドの構成
メソッドの抽出
メソッドのインライン化
一時変数のインライン化
問い合せによる一時変数の置き換え
説明用変数の導入
一時変数の分離
パラメータへの代入の除去
メソッドオブジェクトによるメソッドの置き換え
アルゴリズムの取り替え
第7章 オブジェクト間での特性の移動
メソッドの移動
フィールドの移動
クラスの抽出
クラスのインライン化
委譲の隠蔽
仲介人の除去
外部メソッドの導入
局所的拡張の導入
543仕様書無しさん
2018/04/23(月) 22:31:31.09 まあ簡単に説明するとだな。
「実装クラス」があって
↑
「テストコード」がこの実装クラスを見ている時の
クラスを大きく書き換えるリファクタリングはな
「新しいクラス」を作って、
↑
「実装クラス」の処理を新しいクラスに移譲することで、
↑
「テストコード」から見るインターフェースを
まったく変えること無く、新しいクラスに移行するんだよ
そして「新しいクラス」のテストも書いて(もちろん一部は現在のテストコードを流用していい)
「実装クラス」を参照しているものを、新しいクラスを参照するように書き換え
どこからも使われなくなったら「実装クラス」をそのテストコードもろとも削除
というやり方が、>>542のリファクタリング本に書いている
だから「ユニットテストが壊れない程度のリファクタリング」と言われても
あー、分かってない人ねとしか思わないよ。
「実装クラス」があって
↑
「テストコード」がこの実装クラスを見ている時の
クラスを大きく書き換えるリファクタリングはな
「新しいクラス」を作って、
↑
「実装クラス」の処理を新しいクラスに移譲することで、
↑
「テストコード」から見るインターフェースを
まったく変えること無く、新しいクラスに移行するんだよ
そして「新しいクラス」のテストも書いて(もちろん一部は現在のテストコードを流用していい)
「実装クラス」を参照しているものを、新しいクラスを参照するように書き換え
どこからも使われなくなったら「実装クラス」をそのテストコードもろとも削除
というやり方が、>>542のリファクタリング本に書いている
だから「ユニットテストが壊れない程度のリファクタリング」と言われても
あー、分かってない人ねとしか思わないよ。
544仕様書無しさん
2018/04/23(月) 22:36:31.59 パズルやりたいなら一人でやってろや
仕事中に遊んでんじゃねえ
仕事中に遊んでんじゃねえ
545仕様書無しさん
2018/04/23(月) 22:40:36.13 画面見てキーボード打ってるとゲームして
遊んでるとか思うおっさんがいるらしいなw
遊んでるとか思うおっさんがいるらしいなw
546仕様書無しさん
2018/04/23(月) 22:43:19.23 こんなパズルいらねーんだよ。
バーンと書き換えて、やっちゃって
ミスったらリファクタリングのせいにすればいいだろ
↑こういうやつがリファクタリングのせいにするわけかw
リファクタリングは変更しても問題ない手順で変更することで、
たんなる変更、いつもお前らがやってるような手抜きの
無計画な変更を言い換えた言葉ではありません
バーンと書き換えて、やっちゃって
ミスったらリファクタリングのせいにすればいいだろ
↑こういうやつがリファクタリングのせいにするわけかw
リファクタリングは変更しても問題ない手順で変更することで、
たんなる変更、いつもお前らがやってるような手抜きの
無計画な変更を言い換えた言葉ではありません
547仕様書無しさん
2018/04/23(月) 22:44:15.53 結局テストコード削除してたらだめじゃん
やってる本人はよくても
他人はリファクタ前と後で変わってないことをどうやって確かめるんだ
やってる本人はよくても
他人はリファクタ前と後で変わってないことをどうやって確かめるんだ
548仕様書無しさん
2018/04/23(月) 22:46:32.34 > 結局テストコード削除してたらだめじゃん
ちゃんとよめや。
移行して使われなくなってから削除するんだよ
お前みたいに、なにも考えずに削除してるんじゃねーよw
> 他人はリファクタ前と後で変わってないことをどうやって確かめるんだ
なんのためにコミットログがあると思ってんの?
あ、もしかしてそこから?
レベルの差が2段階、3段階ありそう・・・
ちゃんとよめや。
移行して使われなくなってから削除するんだよ
お前みたいに、なにも考えずに削除してるんじゃねーよw
> 他人はリファクタ前と後で変わってないことをどうやって確かめるんだ
なんのためにコミットログがあると思ってんの?
あ、もしかしてそこから?
レベルの差が2段階、3段階ありそう・・・
550仕様書無しさん
2018/04/23(月) 22:54:04.64 >>549
1. リファクタリングする前にはテストがある。
2. 足りなければ追加する
3. テストが通る
4. リファクタリングする(コードを書き換える)
5. リファクタリングしてもテストが通る
それだけじゃん。
まだ補足が必要?
1. さらにコードを書き換える
2. コードを書き換えるうちに(テスト以外で)使われないモジュールが登場する
3. テストは通るがプロダクションコードでは使われてない
4. 使われてないコードは安全に削除できる
いわれないとわからないかなあ?w
1. リファクタリングする前にはテストがある。
2. 足りなければ追加する
3. テストが通る
4. リファクタリングする(コードを書き換える)
5. リファクタリングしてもテストが通る
それだけじゃん。
まだ補足が必要?
1. さらにコードを書き換える
2. コードを書き換えるうちに(テスト以外で)使われないモジュールが登場する
3. テストは通るがプロダクションコードでは使われてない
4. 使われてないコードは安全に削除できる
いわれないとわからないかなあ?w
551仕様書無しさん
2018/04/23(月) 22:58:29.81 コミットログは?w
553仕様書無しさん
2018/04/23(月) 22:59:49.36 >>541
だからさ、「ガチガチに硬直化」って丁寧に言ってやってんじゃん
そりゃリファクタリングの過程でテストも書き換えるよ
ていうか書き換えるに決まってんじゃんアホか
開発中の日々形を変えるコードに対してガチガチのテストを書くなって言ってんだけど、
わかんない?アホだからわかんないの?もうちょっと精進しろよアホ
だからさ、「ガチガチに硬直化」って丁寧に言ってやってんじゃん
そりゃリファクタリングの過程でテストも書き換えるよ
ていうか書き換えるに決まってんじゃんアホか
開発中の日々形を変えるコードに対してガチガチのテストを書くなって言ってんだけど、
わかんない?アホだからわかんないの?もうちょっと精進しろよアホ
554仕様書無しさん
2018/04/23(月) 23:00:16.48 やっぱり話が通じないのは
レベルの差が4段階、5段階あるからか・・・
レベルの差が4段階、5段階あるからか・・・
555仕様書無しさん
2018/04/23(月) 23:01:48.90 >>553
> だからさ、「ガチガチに硬直化」って丁寧に言ってやってんじゃん
ガチガチに硬直化ってなに?
ファイルをリードオンリーにでもすんのか?
変更できないコードなんてないはずだけど?
どうやるのかはしらないが、
お前がガチガチに硬直化させたのなら、
それはお前の責任だよね?
> だからさ、「ガチガチに硬直化」って丁寧に言ってやってんじゃん
ガチガチに硬直化ってなに?
ファイルをリードオンリーにでもすんのか?
変更できないコードなんてないはずだけど?
どうやるのかはしらないが、
お前がガチガチに硬直化させたのなら、
それはお前の責任だよね?
556仕様書無しさん
2018/04/23(月) 23:01:57.08 リファクタの途中よりリファクタの前と後で結果が変わらないことを保証してほしいんだけど
557仕様書無しさん
2018/04/23(月) 23:02:23.37 スクラッチでシステム作ったことないんだろうか
リリース済みのコードとそれに対する改修の文脈でばかり語ってるところを見ると、そうなんだろうな
リリース済みのコードとそれに対する改修の文脈でばかり語ってるところを見ると、そうなんだろうな
558仕様書無しさん
2018/04/23(月) 23:02:52.05560仕様書無しさん
2018/04/23(月) 23:05:13.56 >>556
> リファクタの途中よりリファクタの前と後で結果が変わらないことを保証してほしいんだけど
だからリファクタの前=コミットログの修正前
リファクタの後=コミットログの修正後だろ?
リファクタの前のテストコードを変更せずに
リファクタの後でもそのまま通れば
変わってないことが証明できる。
あー、これ↓を言っておかないとダメなんだろうなw
結果が変わってないと証明された後、
使われてないと判明したコードは削除できる
> リファクタの途中よりリファクタの前と後で結果が変わらないことを保証してほしいんだけど
だからリファクタの前=コミットログの修正前
リファクタの後=コミットログの修正後だろ?
リファクタの前のテストコードを変更せずに
リファクタの後でもそのまま通れば
変わってないことが証明できる。
あー、これ↓を言っておかないとダメなんだろうなw
結果が変わってないと証明された後、
使われてないと判明したコードは削除できる
562仕様書無しさん
2018/04/23(月) 23:05:53.43 おまいがリファクタして部分的な仕様を変えまくってんじゃん
そのうえで全体的な仕様が変わってないことを保証しないといけないわけだが
そのうえで全体的な仕様が変わってないことを保証しないといけないわけだが
563仕様書無しさん
2018/04/23(月) 23:06:32.49 >>559
> リファクタ本に書かれてる話じゃなくてごめんね
じゃあどこに書かれてる話なの?
お前の想像の世界の話はいらないからw
どうも「自分がくそったれなやり方してます。
くそったれなやり方には使えないんですけど?」
って言ってるようにしか見えない。
お前のくそったれなやり方の問題だろとしか
> リファクタ本に書かれてる話じゃなくてごめんね
じゃあどこに書かれてる話なの?
お前の想像の世界の話はいらないからw
どうも「自分がくそったれなやり方してます。
くそったれなやり方には使えないんですけど?」
って言ってるようにしか見えない。
お前のくそったれなやり方の問題だろとしか
564仕様書無しさん
2018/04/23(月) 23:06:42.27 偉そうな口をきいてるわりに視野が狭い
565仕様書無しさん
2018/04/23(月) 23:07:05.91566仕様書無しさん
2018/04/23(月) 23:08:13.58 >>562
> おまいがリファクタして部分的な仕様を変えまくってんじゃん
変えてないよ?
日々テスト変えなきゃならないどこかの誰かさんと違って、
テストは基本安定している。
テストコードを変えない状態でコードを書き換えてるので
リファクタしても仕様はまったく変わらない
> おまいがリファクタして部分的な仕様を変えまくってんじゃん
変えてないよ?
日々テスト変えなきゃならないどこかの誰かさんと違って、
テストは基本安定している。
テストコードを変えない状態でコードを書き換えてるので
リファクタしても仕様はまったく変わらない
567仕様書無しさん
2018/04/23(月) 23:08:14.72 日々コードの形が変わっていくのをイメージできない初心者はIDDDでも読んでみたらー
568仕様書無しさん
2018/04/23(月) 23:10:19.92 もしかしてプライベートメソッドのテストをしてるとかかな?w
それユニットテストじゃない
ユニットテストはモジュールのインターフェースのテストだから
変わりまくることはあり得ない。
もしモジュールのインターフェースという概念がなくて、
単に長いから関数にまとめましたみたいな、
なんでかしらないけど、この関数テストしづらいです。
なんてことをしてるのならそいつの問題
それユニットテストじゃない
ユニットテストはモジュールのインターフェースのテストだから
変わりまくることはあり得ない。
もしモジュールのインターフェースという概念がなくて、
単に長いから関数にまとめましたみたいな、
なんでかしらないけど、この関数テストしづらいです。
なんてことをしてるのならそいつの問題
570仕様書無しさん
2018/04/23(月) 23:12:22.55 具体的にどんなコードとどんなテストをかいて
ガチガチに固まって、メンテナンスが大変です。
なんて状態になってるのか書いてみたら良いよ。
想像の世界の話じゃないなら書けるはず
ガチガチに固まって、メンテナンスが大変です。
なんて状態になってるのか書いてみたら良いよ。
想像の世界の話じゃないなら書けるはず
571仕様書無しさん
2018/04/23(月) 23:14:05.70 >>569
外から見た時の動きが変わってなければ良い。
そして外から見た時の動きが変わってないが、
(テストコード以外で)使われていないメソッドを作ることは可能
そしたら使われてないコードは安全に消せる。
こういう話をしてます。
外から見た時の動きが変わってなければ良い。
そして外から見た時の動きが変わってないが、
(テストコード以外で)使われていないメソッドを作ることは可能
そしたら使われてないコードは安全に消せる。
こういう話をしてます。
572仕様書無しさん
2018/04/23(月) 23:18:32.85573仕様書無しさん
2018/04/23(月) 23:38:30.60 低い階層がなんののか知らんが、
【現在のクラス】をリファクタリングするとき
「新しいクラス」
↑
【現在のクラス】←「その他のクラス」←「その他のクラスのテストコード」
↑
「現在のクラスのテストコード」
こういう階層の時、「現在のクラスのテストコード」はそのままに、
「新しいクラス」に処理を移動していくことはできるだろ?
(移動だけじゃなくて新しく作ってもいいけど)
リファクタリングするのは【現在のクラス】だけ
「現在のクラスのテストコード」は書き換えない
【現在のクラス】を利用している「その他のクラス」も書き換えない
(当然「その他のクラスのテストコード」も)
コードの修正をすすめると【現在のクラス】は「新しいクラス」への移譲コードだけになる。
また「その他のクラス」は「新しいクラス」を参照するようにする。
「その他のクラスのテストコード」の修正はしないから、変わってないことは保証できる。
最終的に【現在のクラス】を「その他のクラス」は参照することはなくなる。
そして【現在のクラス】は「現在のクラスのテストコード」以外からは
どこからも使われてないクラスになるので安全に削除できる
これが関数レベルではない、クラスレベルのリファクタリングのやり方
それは>>542とかの本に書いてある基本だから、ほんと勉強してくれとしか
【現在のクラス】をリファクタリングするとき
「新しいクラス」
↑
【現在のクラス】←「その他のクラス」←「その他のクラスのテストコード」
↑
「現在のクラスのテストコード」
こういう階層の時、「現在のクラスのテストコード」はそのままに、
「新しいクラス」に処理を移動していくことはできるだろ?
(移動だけじゃなくて新しく作ってもいいけど)
リファクタリングするのは【現在のクラス】だけ
「現在のクラスのテストコード」は書き換えない
【現在のクラス】を利用している「その他のクラス」も書き換えない
(当然「その他のクラスのテストコード」も)
コードの修正をすすめると【現在のクラス】は「新しいクラス」への移譲コードだけになる。
また「その他のクラス」は「新しいクラス」を参照するようにする。
「その他のクラスのテストコード」の修正はしないから、変わってないことは保証できる。
最終的に【現在のクラス】を「その他のクラス」は参照することはなくなる。
そして【現在のクラス】は「現在のクラスのテストコード」以外からは
どこからも使われてないクラスになるので安全に削除できる
これが関数レベルではない、クラスレベルのリファクタリングのやり方
それは>>542とかの本に書いてある基本だから、ほんと勉強してくれとしか
574仕様書無しさん
2018/04/23(月) 23:43:44.16 一応言っておくけど、これは、クラス根本的に
変えてしまうほどのリファクタリングの手順
メソッド一個だけとかならここまでやる必要はない。
その場合は、メソッド単体で、他のメソッドの委譲したりして
該当のメソッドを使われてない状態にしてから削除する
変えてしまうほどのリファクタリングの手順
メソッド一個だけとかならここまでやる必要はない。
その場合は、メソッド単体で、他のメソッドの委譲したりして
該当のメソッドを使われてない状態にしてから削除する
575仕様書無しさん
2018/04/23(月) 23:58:55.58 下位クラスの結果も検証するように緻密に単体テスト作られてればいいが
ユニットテストするときなんて下位クラスはモックになってること多い
その場合参照するクラス変わったらモック設定書き換えにゃならん
ユニットテストするときなんて下位クラスはモックになってること多い
その場合参照するクラス変わったらモック設定書き換えにゃならん
576仕様書無しさん
2018/04/24(火) 00:11:44.40 既にあるロジックをどこか別の場所に移動する以外にネタねえのかよw
579仕様書無しさん
2018/04/24(火) 00:24:31.48 結局単体テストは個人のテスト証跡以上の意味はないのだろうか
580仕様書無しさん
2018/04/24(火) 00:42:19.08 あるよ
581仕様書無しさん
2018/04/24(火) 06:04:21.71 だから
リファクタリングなんぞ不要
数年後には業務変化の見直しと現在業務の確認のために、システムをまるごと作り直すから
リファクタリングなんぞ不要
数年後には業務変化の見直しと現在業務の確認のために、システムをまるごと作り直すから
582仕様書無しさん
2018/04/24(火) 06:15:49.27 出社めんどくせえ
584仕様書無しさん
2018/04/24(火) 08:52:53.82 定期的なリプレースでは使う言語が変わる可能性が結構高い確率である
こまめにリファクタリングしたら大損だよ
こまめにリファクタリングしたら大損だよ
585仕様書無しさん
2018/04/24(火) 09:48:46.57 >>584
こまめにリファクタリングってことは、リファクタリング後の修正がこまめに発生してるんだから、そこでリファクタリングコストの半分以上は回収できてると思うの
こまめにリファクタリングってことは、リファクタリング後の修正がこまめに発生してるんだから、そこでリファクタリングコストの半分以上は回収できてると思うの
586仕様書無しさん
2018/04/24(火) 11:20:18.41 常に機能追加や改修しているようなソフトウェアであればリファクタリングは有効
一度作ったらあまり改修しないようなソフトウェアであればリファクタリングのデメリットが目立つ
つまり、アマゾンドットコムみたいに常に機能追加や改修が行われる投資対象であればリファクタリングで機動力を確保するのは理にかなってる
逆に家電に代表されるような組み込み系、もしくは制御系のような、機能追加や改修の頻度が低いものであればリファクタリングする意味は相対的に小さい
お金をつぎ込めばつぎ込むほどリターンがあるのであれば、CIの中にリファクタリングを入れてしまえばいいだろう
リファクタリングの結果がすぐに出やすく、デメリットであるリファクタリング起因の不具合についても
改修が多ければ多いほど、リファクタリング起因の不具合減産と相殺されるからだ
リファクタリングの問題でやはり難しいのは改修頻度が低く失敗が許されない分野だ
これらの分野は製造工数とテスト工数の比でいうとテスト工数の割合が大きい
つまり、リファクタリングによって過大なテスト工数が必要となってしまい、リファクタリングのメリットが吹き飛んでしまう
しかしながら動いている箇所はいじらない方針もいつまでも続くわけじゃない
いつかのタイミングで全面リプレースするか、リファクタリング(もはや資料もなく知っている人もいない)を行うことになる
一度作ったらあまり改修しないようなソフトウェアであればリファクタリングのデメリットが目立つ
つまり、アマゾンドットコムみたいに常に機能追加や改修が行われる投資対象であればリファクタリングで機動力を確保するのは理にかなってる
逆に家電に代表されるような組み込み系、もしくは制御系のような、機能追加や改修の頻度が低いものであればリファクタリングする意味は相対的に小さい
お金をつぎ込めばつぎ込むほどリターンがあるのであれば、CIの中にリファクタリングを入れてしまえばいいだろう
リファクタリングの結果がすぐに出やすく、デメリットであるリファクタリング起因の不具合についても
改修が多ければ多いほど、リファクタリング起因の不具合減産と相殺されるからだ
リファクタリングの問題でやはり難しいのは改修頻度が低く失敗が許されない分野だ
これらの分野は製造工数とテスト工数の比でいうとテスト工数の割合が大きい
つまり、リファクタリングによって過大なテスト工数が必要となってしまい、リファクタリングのメリットが吹き飛んでしまう
しかしながら動いている箇所はいじらない方針もいつまでも続くわけじゃない
いつかのタイミングで全面リプレースするか、リファクタリング(もはや資料もなく知っている人もいない)を行うことになる
587仕様書無しさん
2018/04/24(火) 12:15:51.10 リファクタリングによって設計が改善されたと思ってるのはやった本人だけとかありがち
588仕様書無しさん
2018/04/24(火) 13:06:03.44 >>583
うちもそうだよ?
課レベルのシステム、部レベルのシステム、社レベルのシステム
があって、それぞれの長が変わったらシステムの仕様変更が最初の長の仕事になってる。
システムの見直しと再設計って、その部署の現在運用を把握するのに最適という理由で。
うちもそうだよ?
課レベルのシステム、部レベルのシステム、社レベルのシステム
があって、それぞれの長が変わったらシステムの仕様変更が最初の長の仕事になってる。
システムの見直しと再設計って、その部署の現在運用を把握するのに最適という理由で。
589仕様書無しさん
2018/04/24(火) 13:34:56.47 それはそのシステムで業務効率化はされてるんか...?
もはやマニュアルってレベルだろそれ
エンジニアしか理解できない仕事のマニュアル。
もはやマニュアルってレベルだろそれ
エンジニアしか理解できない仕事のマニュアル。
590仕様書無しさん
2018/04/24(火) 13:49:15.67 まず業務があってシステムを作るべきか ※日本風
システムのあわせて業務を再構築するべきか ※欧米風
どっちがいいんだろうね
システムのあわせて業務を再構築するべきか ※欧米風
どっちがいいんだろうね
591仕様書無しさん
2018/04/24(火) 14:48:59.76593仕様書無しさん
2018/04/24(火) 18:11:05.66 >>592
セブンミール時代からたまに使ってるけど、たしかに使いづらくなった。
けど、冷静に考えると。今のレベルのシステムを一応作れたなら。元々のシステムも実装できる。
運用方針を新システム化した際に「顧客のニーズ」を取り入れるために店長に聞いたら。
「店長のニーズ」を取り入れちゃったんだろうwww
ただ、「店長のニーズ」も旧システムで現実に起こってる問題の結果で、
さらに、現在、店舗自体が人手不足に陥ってるから配達要員、商品供給ライン等で
旧システムであっても実際には様々な遅延等々があったんだろう。
おそらく、システムの使いづらさの原因は、まさかのアナログな「現場の配達に要する人手不足」だと思うわw
セブンミール時代からたまに使ってるけど、たしかに使いづらくなった。
けど、冷静に考えると。今のレベルのシステムを一応作れたなら。元々のシステムも実装できる。
運用方針を新システム化した際に「顧客のニーズ」を取り入れるために店長に聞いたら。
「店長のニーズ」を取り入れちゃったんだろうwww
ただ、「店長のニーズ」も旧システムで現実に起こってる問題の結果で、
さらに、現在、店舗自体が人手不足に陥ってるから配達要員、商品供給ライン等で
旧システムであっても実際には様々な遅延等々があったんだろう。
おそらく、システムの使いづらさの原因は、まさかのアナログな「現場の配達に要する人手不足」だと思うわw
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「中国人の訪日熱は冷めた」 人気旅行先から日本外れる 14日で自粛呼びかけ1カ月 [蚤の市★]
- 地震 [Hitzeschleier★]
- 【STARTO ENTERTAINMENT】SUPER EIGHTの横山裕、フジ『ドッキリGP』ロケで全治2ヶ月の重傷 [Ailuropoda melanoleuca★]
- 【話題】好きな鍋は?! 「寄せ鍋」「キムチ鍋」「水炊き」「もつ鍋」「豆乳鍋」「ちゃんこ鍋」「ごま坦々鍋」「トマト鍋」 [ひぃぃ★]
- 【地震】 茨城 栃木 埼玉 千葉 震度4 [KingFisherは魚じゃないよ★]
- 【食】「シャウエッセンは焼くべからず」暗黙のルールを破り売上高過去最高…日本ハム社員たちが「夜味」にかけた情熱 [ぐれ★]
- 自民党、金融所得課税30%で決定か。株を売ったり、配当金が入ると国が30%持って行きます [838847604]
- ムミィ🥺いる❓🏡
- 巨乳にとにかく縁がない
- 新型PSP、ほぼ全てのPS5ソフトをプレイできる?キタ━━━━━━(゚∀゚)━━━━━━!!!!! [303493227]
- 高市さん「おかしいリフレ派の有識者から聞いていた話と全然違う」急速な円安拡大に危機感、利上げや増税容認へ [709039863]
- 兎田ぺこら、とんでもない方法でさくらみこの存在を消してしまう──── [268244553]
