機能追加や変更した時に、全部テストしてるでしょ?
いつもやってることじゃん
探検
リファクタリングすると全部テストしろと言ってくるやつの矛盾
■ このスレッドは過去ログ倉庫に格納されています
2018/04/15(日) 13:13:44.63
254仕様書無しさん
2018/04/22(日) 14:58:32.10 >>243
> 本来必要ないのに修正するという意味ではいかにもリファクタリングだ
何だその定義?
外部的振る舞いを変えずに理解や修正が簡単になるように
内部構造を改善することだけが「いかにもリファクタリング」って
言って良いんだよ。
必要ないのに修正するのがリファクタリングなんて定義初めて聞いたわw
どーこーの、定義ですか?ソースくださいw
> 本来必要ないのに修正するという意味ではいかにもリファクタリングだ
何だその定義?
外部的振る舞いを変えずに理解や修正が簡単になるように
内部構造を改善することだけが「いかにもリファクタリング」って
言って良いんだよ。
必要ないのに修正するのがリファクタリングなんて定義初めて聞いたわw
どーこーの、定義ですか?ソースくださいw
255仕様書無しさん
2018/04/22(日) 15:01:25.15 >>243
> で、ほとんどはリビルドで済む話だけど
> どさくさにまぎれてちょっと不具合修正しましょうとか
それは不具合修正であってリファクタリングではない
(外部的振る舞いが変わっている)
> 機能追加して欲しいとなる
それは機能追加であってリファクタリングではない
(外部的振る舞いが変わっている)
リファクタリングというのは、不具合修正や機能追加を行う際に
行うもので、不具合修正や機能追加でやる内容の一部
リファクタリング or 不具合修正 or 機能追加 ではない
不具合修正(リファクタリング含む) or 機能追加(リファクタリング含む)
である
> で、ほとんどはリビルドで済む話だけど
> どさくさにまぎれてちょっと不具合修正しましょうとか
それは不具合修正であってリファクタリングではない
(外部的振る舞いが変わっている)
> 機能追加して欲しいとなる
それは機能追加であってリファクタリングではない
(外部的振る舞いが変わっている)
リファクタリングというのは、不具合修正や機能追加を行う際に
行うもので、不具合修正や機能追加でやる内容の一部
リファクタリング or 不具合修正 or 機能追加 ではない
不具合修正(リファクタリング含む) or 機能追加(リファクタリング含む)
である
257仕様書無しさん
2018/04/22(日) 15:14:25.01 >>249
俺自身は発言の中でリプレースとはどういうものかとはなにも規定してませんが
まぁ外部的振る舞いという面で考えると、変わる場合もあれば変わらない場合もあるよね当然
で、たまたま外部的振る舞いが変わらなかったとしても、それをリファクタリングとは呼ばないよね
俺自身は発言の中でリプレースとはどういうものかとはなにも規定してませんが
まぁ外部的振る舞いという面で考えると、変わる場合もあれば変わらない場合もあるよね当然
で、たまたま外部的振る舞いが変わらなかったとしても、それをリファクタリングとは呼ばないよね
260仕様書無しさん
2018/04/22(日) 15:21:57.33 > で、たまたま外部的振る舞いが変わらなかったとしても、それをリファクタリングとは呼ばないよね
そりゃそうだろうね。
リファクタリングは動きを変えないために、
特定の手順にしたがってソースコードを修正する
http://shop.ohmsha.co.jp/shopdetail/000000003881/
ここの詳細目次の、5章(は解説なので正確には6章)から
その手順がリファクタリング・カタログとしてまとめられてる。
これを読むと、このやり方なら動きが変わるわけないなってわかるはず。
そしてもう一つ重要なのはテスト。テストによって
外部的振る舞いが変わらないことを保証する
だから、たまたま外部的振る舞いが変わらないっていうのは
テストを実行してないんじゃないかと思われる
テストを実行して、外部的振る舞いが変わらないのを確認するのが
リファクタリングだから、修正のたびに何度も "意図的に" 外部的振る舞いが
変わってないことを確認してる(だからたまたまなんて思わない)
そりゃそうだろうね。
リファクタリングは動きを変えないために、
特定の手順にしたがってソースコードを修正する
http://shop.ohmsha.co.jp/shopdetail/000000003881/
ここの詳細目次の、5章(は解説なので正確には6章)から
その手順がリファクタリング・カタログとしてまとめられてる。
これを読むと、このやり方なら動きが変わるわけないなってわかるはず。
そしてもう一つ重要なのはテスト。テストによって
外部的振る舞いが変わらないことを保証する
だから、たまたま外部的振る舞いが変わらないっていうのは
テストを実行してないんじゃないかと思われる
テストを実行して、外部的振る舞いが変わらないのを確認するのが
リファクタリングだから、修正のたびに何度も "意図的に" 外部的振る舞いが
変わってないことを確認してる(だからたまたまなんて思わない)
261仕様書無しさん
2018/04/22(日) 15:23:41.48262仕様書無しさん
2018/04/22(日) 15:24:49.90 意図的に外部的振る舞いが変わらない形で修正して
確認するのがリファクタリングだから、
たまたま動きが変わらないのは、単なるソースコードの変更ってことか
多いんだよな、単なるソースコードの変更をリファクタリングとか言ってるやつ
確認するのがリファクタリングだから、
たまたま動きが変わらないのは、単なるソースコードの変更ってことか
多いんだよな、単なるソースコードの変更をリファクタリングとか言ってるやつ
264仕様書無しさん
2018/04/22(日) 15:29:59.37 プログラム全体に波及するような設計の変更を
こまめにやるためのテクニックも↓に書いてありますよ。
> http://shop.ohmsha.co.jp/shopdetail/000000003881/
> ここの詳細目次の、5章(は解説なので正確には6章)から
> その手順がリファクタリング・カタログとしてまとめられてる。
> これを読むと、このやり方なら動きが変わるわけないなってわかるはず。
えいやってやるしかないと思ってるのは
単にその力がないだけ
こまめにやるためのテクニックも↓に書いてありますよ。
> http://shop.ohmsha.co.jp/shopdetail/000000003881/
> ここの詳細目次の、5章(は解説なので正確には6章)から
> その手順がリファクタリング・カタログとしてまとめられてる。
> これを読むと、このやり方なら動きが変わるわけないなってわかるはず。
えいやってやるしかないと思ってるのは
単にその力がないだけ
265仕様書無しさん
2018/04/22(日) 15:32:00.64 テストしないでコード整理するのも時には必要
あまりにも悲惨なコードに短時間で多数の機能を追加しなきゃならん時とかね
多少のミスは割り切ってリファクタリングして機能追加して全体を手動テストして納品する
俺はこれをエクストリームリファクタリングと呼んでる
厳密なリファクタリング信者からすると気持ちわるいかもしれないが生産性は高い
あまりにも悲惨なコードに短時間で多数の機能を追加しなきゃならん時とかね
多少のミスは割り切ってリファクタリングして機能追加して全体を手動テストして納品する
俺はこれをエクストリームリファクタリングと呼んでる
厳密なリファクタリング信者からすると気持ちわるいかもしれないが生産性は高い
266仕様書無しさん
2018/04/22(日) 15:35:23.66267仕様書無しさん
2018/04/22(日) 15:35:46.27 経験が少ないと、大規模リファクタリングの必要性に直面する状況が想像できないかもしれない
そういう場面も多々あるもんだけどね
そういう場面も多々あるもんだけどね
268仕様書無しさん
2018/04/22(日) 15:35:59.41 >>259
井の中の蛙と大海の大ウミガメの違いと言えばおわかりになるでしょうか
井の中の蛙と大海の大ウミガメの違いと言えばおわかりになるでしょうか
269仕様書無しさん
2018/04/22(日) 15:39:24.39271仕様書無しさん
2018/04/22(日) 15:40:31.92 >>267
× 経験が少ないと、大規模リファクタリングの必要性に直面する状況が想像できないかもしれない
○ 経験が少ないと、大規模 改修 の必要性に直面する状況が想像できないかもしれない
なんでリファクタリングじゃないものを
リファクタリングって呼ぶんですか?
リファクタリングを単なる改修の意味で使わないでください
× 経験が少ないと、大規模リファクタリングの必要性に直面する状況が想像できないかもしれない
○ 経験が少ないと、大規模 改修 の必要性に直面する状況が想像できないかもしれない
なんでリファクタリングじゃないものを
リファクタリングって呼ぶんですか?
リファクタリングを単なる改修の意味で使わないでください
272仕様書無しさん
2018/04/22(日) 15:41:21.46 >>270
> あの基本書の内容を踏襲していない行為をリファクタリングとは呼びませんよ?
そうですね。基本書の内容を踏襲していない行為は
リファクタリングと呼んではいけません。
ただの改修と言いましょう
> あの基本書の内容を踏襲していない行為をリファクタリングとは呼びませんよ?
そうですね。基本書の内容を踏襲していない行為は
リファクタリングと呼んではいけません。
ただの改修と言いましょう
273仕様書無しさん
2018/04/22(日) 15:42:30.64 なんで改修をリファクタリングって言いたいんだろう?
かっこつけたいのかな?
かっこつけたいのかな?
274仕様書無しさん
2018/04/22(日) 15:43:40.96 言葉の定義とかつまらんからもっと益になる話しようぜぇ
グローバル変数(public static 変数も含む)を安全に排除するリファクタリングテクニックについて議論しよう
リファクタリングするときいつもこれだけはスマートに解決できない
リスクを背負って修正するしかなくなる
グローバル変数(public static 変数も含む)を安全に排除するリファクタリングテクニックについて議論しよう
リファクタリングするときいつもこれだけはスマートに解決できない
リスクを背負って修正するしかなくなる
275仕様書無しさん
2018/04/22(日) 15:46:22.63 大勃起リファクタリングと聞いて
276仕様書無しさん
2018/04/22(日) 15:49:05.55 >> 271
> なんでリファクタリングじゃないものを
> リファクタリングって呼ぶんですか?
お前にとっての「僕のリファクタリング」なんて知らんがな
> なんでリファクタリングじゃないものを
> リファクタリングって呼ぶんですか?
お前にとっての「僕のリファクタリング」なんて知らんがな
277仕様書無しさん
2018/04/22(日) 15:54:49.49 動脈から直接リファクタリングを投与した
279仕様書無しさん
2018/04/22(日) 15:59:46.87 最初に書いたテストがリファクタリングの前後で同様に動くとは限らない
壊れたテストを書き直すのもリファクタリングの一部
壊れたテストを書き直すのもリファクタリングの一部
282仕様書無しさん
2018/04/22(日) 16:09:52.55 ここまで技術的な話題ゼロwwwマ板は素人しかいないってホントだったのか
283仕様書無しさん
2018/04/22(日) 16:10:33.85 >>281
なんでまた曲解するの?
2つの別々の話を混ぜないように
1. 大規模なものも小規模なものも外部的振る舞いが
変わらないようにちゃんとした手順で行って
テストで確認してるならリファクタリング
そうでないなら、単なる改修
2. 大規模リファクタリングが必要になるのは
普段からこまめにリファクタリングしてないから。
普段の改修の中でこまめにリファクタリングしていれば大規模なんて必要ない。
必要になるのは普段からリファクタリングしてなくて、
手遅れ状態になってる証拠。そういうのはあってはだめ
なんでまた曲解するの?
2つの別々の話を混ぜないように
1. 大規模なものも小規模なものも外部的振る舞いが
変わらないようにちゃんとした手順で行って
テストで確認してるならリファクタリング
そうでないなら、単なる改修
2. 大規模リファクタリングが必要になるのは
普段からこまめにリファクタリングしてないから。
普段の改修の中でこまめにリファクタリングしていれば大規模なんて必要ない。
必要になるのは普段からリファクタリングしてなくて、
手遅れ状態になってる証拠。そういうのはあってはだめ
284仕様書無しさん
2018/04/22(日) 16:37:26.44 リファクタリングは小まめに行うべきか?
ある程度たまってから行うべきか?
結論:リファクタリングが不要になるように書け!
ある程度たまってから行うべきか?
結論:リファクタリングが不要になるように書け!
285仕様書無しさん
2018/04/22(日) 16:38:45.75 将来の改修や拡張の方向性がわからないのにんあことできるわけないだろ!
286仕様書無しさん
2018/04/22(日) 16:55:29.35 リファクタリングはソースの修正が必要だから行う
つまりソースの修正が必要なくなればいい
データベースでいうところの、UPDATEではなくINSERTになるようにすればいい
つまり、適切な粒度で関数(メソッド)を適切に作成すれば
リファクタリングは不要なのではないか?
例えば、1関数20行という教えはそういう意味も内包しているのではないか?
今までリファクタリングが必要になった場面を思い出して欲しい
やたら長い関数、スコープが不適切な変数、マジックナンバーやあり得ないelseの使い方などがほとんどではないだろうか?
本当にリファクタリングが必要な場面などほぼ無いはずである
もしリファクタリングが必要だというのであれば、それは清書を後回しにして適当に書きなぐることを優先した結果であり
そもそも「ソースを書いていない」わけである
漫画であればペン入れをしていない下書きやネームの状態、ガンプラでいえば接着剤を使わず仮組をした状態だ
もちろん、「正しく作る」ことよりも「とりあえず動く」ものを何よりも時間を優先して作ることが至上命題であることもあるだろう
それでも書道の名家は一発で何度でも美しい書体を生み出す
プログラマであっても一発で完全に美しいソースコードを生み出すスキルは必要なのではないだろうか?
以上のことから、「リファクタリングが不要になるように書け!」というのは正しいと言える
つまりソースの修正が必要なくなればいい
データベースでいうところの、UPDATEではなくINSERTになるようにすればいい
つまり、適切な粒度で関数(メソッド)を適切に作成すれば
リファクタリングは不要なのではないか?
例えば、1関数20行という教えはそういう意味も内包しているのではないか?
今までリファクタリングが必要になった場面を思い出して欲しい
やたら長い関数、スコープが不適切な変数、マジックナンバーやあり得ないelseの使い方などがほとんどではないだろうか?
本当にリファクタリングが必要な場面などほぼ無いはずである
もしリファクタリングが必要だというのであれば、それは清書を後回しにして適当に書きなぐることを優先した結果であり
そもそも「ソースを書いていない」わけである
漫画であればペン入れをしていない下書きやネームの状態、ガンプラでいえば接着剤を使わず仮組をした状態だ
もちろん、「正しく作る」ことよりも「とりあえず動く」ものを何よりも時間を優先して作ることが至上命題であることもあるだろう
それでも書道の名家は一発で何度でも美しい書体を生み出す
プログラマであっても一発で完全に美しいソースコードを生み出すスキルは必要なのではないだろうか?
以上のことから、「リファクタリングが不要になるように書け!」というのは正しいと言える
287仕様書無しさん
2018/04/22(日) 16:58:10.99 >>280
意味明瞭
意味明瞭
288仕様書無しさん
2018/04/22(日) 16:58:35.06 >>286
あー、いや、テストファーストでは
最初にテストコードを書いて、
テストに通る最低限のコードを書いて
そのあとリファクタリングして
完成だから
つまりあんたの言う「ソースを書いている」状態にするまでに
リファクタリングをする。
ちょっと勉強し直してきて
あー、いや、テストファーストでは
最初にテストコードを書いて、
テストに通る最低限のコードを書いて
そのあとリファクタリングして
完成だから
つまりあんたの言う「ソースを書いている」状態にするまでに
リファクタリングをする。
ちょっと勉強し直してきて
289仕様書無しさん
2018/04/22(日) 17:02:47.45 もちろんテストファーストをしないならリファクタリングはしないってことじゃないよ。
先に実装しても、その後テストコードを書いて、それが通るのを維持しながら
ソースコードを読みやすくする。これもリファクタリング
先に実装しても、その後テストコードを書いて、それが通るのを維持しながら
ソースコードを読みやすくする。これもリファクタリング
290仕様書無しさん
2018/04/22(日) 17:07:13.80 テストファーストはリファクタリングじゃないですよ
291仕様書無しさん
2018/04/22(日) 17:08:24.89 テストファーストはテストを先に書くってだけで
リファクタリングを内包するわけじゃないですよ
リファクタリングを内包するわけじゃないですよ
292仕様書無しさん
2018/04/22(日) 17:08:52.51 テストファーストとリファクタリングは独立した概念です
293仕様書無しさん
2018/04/22(日) 17:08:57.78294仕様書無しさん
2018/04/22(日) 17:10:15.59 http://www.itmedia.co.jp/im/articles/0602/24/news137.html
> 実行したテストコードが通らなければ『レッド』という状態になり、
> 実装コードを修正する。一方、テストが通った状態は『グリーン』と呼ぶ。
> ただしテストが通っても、可読性を考えてコードをきれいに整えることも多い。
> テストファーストではこの修正作業を『リファクタリング』と呼んでいる。
へー、このスレ勉強になるな
> 実行したテストコードが通らなければ『レッド』という状態になり、
> 実装コードを修正する。一方、テストが通った状態は『グリーン』と呼ぶ。
> ただしテストが通っても、可読性を考えてコードをきれいに整えることも多い。
> テストファーストではこの修正作業を『リファクタリング』と呼んでいる。
へー、このスレ勉強になるな
295仕様書無しさん
2018/04/22(日) 17:11:11.12 個人的にそういうやり方をやってるってだけで
テストファーストとリファクタリングは根本的に異なり
完全に独立して成り立つものですよ
テストファーストとリファクタリングは根本的に異なり
完全に独立して成り立つものですよ
296仕様書無しさん
2018/04/22(日) 17:12:42.21 テストファーストにリファクタリングは必要ありません
むしろテストファーストの目的を没却する悪手と言っていいでしょう
むしろテストファーストの目的を没却する悪手と言っていいでしょう
298仕様書無しさん
2018/04/22(日) 17:14:35.76 テストファーストでリファクタリングが必要になるなら
テストの粒度が間違っている証拠です、にわかがよくやります
テストの粒度が間違っている証拠です、にわかがよくやります
303仕様書無しさん
2018/04/22(日) 17:15:38.76 テストしないでリファクタリングおっかない
304仕様書無しさん
2018/04/22(日) 17:16:22.76 >>302
ググらないとわからないならお前がにわかです
ググらないとわからないならお前がにわかです
306仕様書無しさん
2018/04/22(日) 17:17:37.22 >>305
意味明瞭
意味明瞭
307仕様書無しさん
2018/04/22(日) 17:18:09.05311仕様書無しさん
2018/04/22(日) 17:19:51.01 グーグルを神か何かだと思ってるんじゃなかろうかね
312仕様書無しさん
2018/04/22(日) 17:20:34.82 グーグルは知らないが、俺は知ってる。
情報の出どころは教えられないが
俺を信じてくれるよね?
情報の出どころは教えられないが
俺を信じてくれるよね?
314仕様書無しさん
2018/04/22(日) 17:22:08.32 ママぐらいは信じてくれるんじゃねーの?w
316仕様書無しさん
2018/04/22(日) 17:29:39.31 >>315
意味明瞭
意味明瞭
318仕様書無しさん
2018/04/22(日) 17:30:32.03 >>317
意味明瞭
意味明瞭
319仕様書無しさん
2018/04/22(日) 17:31:10.19 リファクタリングの定義がないから仕方ない。
コードをいじってばかりのやつは、手段と目的が逆転している。
コードをいじってばかりのやつは、手段と目的が逆転している。
321仕様書無しさん
2018/04/22(日) 17:32:16.13 >>320
意味明瞭
意味明瞭
324仕様書無しさん
2018/04/22(日) 17:33:03.99 意味明瞭ってなんだよ
326仕様書無しさん
2018/04/22(日) 17:33:40.70 >>323
意味明瞭
意味明瞭
327仕様書無しさん
2018/04/22(日) 17:34:51.48 >>319
> コードをいじってばかりのやつは、手段と目的が逆転している。
いや、だからリファクタリングだけやるのは論外って言ってるんだが?
目的は機能追加などの改修で、その手段(の一つ)がリファクタリング
目的を実行する時にこまめにやる手段で、手段そのものが目的になってるような
リファクタリングだけの作業とか大規模リファクタリングはおかしいって
言ってるんだが?
> コードをいじってばかりのやつは、手段と目的が逆転している。
いや、だからリファクタリングだけやるのは論外って言ってるんだが?
目的は機能追加などの改修で、その手段(の一つ)がリファクタリング
目的を実行する時にこまめにやる手段で、手段そのものが目的になってるような
リファクタリングだけの作業とか大規模リファクタリングはおかしいって
言ってるんだが?
328仕様書無しさん
2018/04/22(日) 17:35:16.48 >>325
意味明瞭をわからない人間の方がブラジル人じゃないだろ
意味明瞭をわからない人間の方がブラジル人じゃないだろ
329仕様書無しさん
2018/04/22(日) 17:35:49.03 >>324
意味がはっきりわかること
意味がはっきりわかること
333仕様書無しさん
2018/04/22(日) 17:38:05.31 意味明瞭ワロタwww
335仕様書無しさん
2018/04/22(日) 17:38:31.57338仕様書無しさん
2018/04/22(日) 17:39:54.17 >>336
はい知らないのな、お前日本人のこと1ミリも理解できてない
はい知らないのな、お前日本人のこと1ミリも理解できてない
344仕様書無しさん
2018/04/22(日) 17:41:18.43 荒らしが飽きたら続きのレスをお願いしますよ
346仕様書無しさん
2018/04/22(日) 17:43:39.06 ただ、普段からリファクタリングしてたら依頼がきたときに素早く対応できるよね
348仕様書無しさん
2018/04/22(日) 17:44:11.09353仕様書無しさん
2018/04/22(日) 17:50:04.15■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【おこめ券】物価高対策の“おこめ券”全米販は1枚477円で販売へ 鈴木農水大臣「国民の皆様に活用いただきやすいよう工夫いただいた」★2 [ぐれ★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★5 [蚤の市★]
- 【埼玉】54歳男性死亡…菓子店で機械に挟まれる 昼前に1人で作業中、あんを混ぜる“かくはん機”に巻き込まれ…女性従業員が発見 入間 [ぐれ★]
- 「偽サッチャー」「自滅的」「時代遅れ」 高市首相の経済政策を海外メディアが酷評 ★5 [蚤の市★]
- 神田沙也加さん元恋人で元俳優の前山剛久 六本木のメンズラウンジ勤務を報告「真叶(まなと)です。よろしく」 [muffin★]
- 【老舗文具メーカー】「生成AIで制作していた」――サクラクレパス、“AI疑惑”ポスターの調査結果を報告 ★2 [ぐれ★]
- 鈴木農水大臣「物価高対策でお米券1枚477円で販売します☺」 [931948549]
- ムミィ🥺いる❓🏡
- お前らの使える固有魔法ってなに?
- ママカースト、地獄すぎるwwwwwwwwwwwwwwwwwwwww [977790669]
- 【高市悲報】片山さつき「かじ取り間違えてデフレになったらどうすんの!😡」😲 [359965264]
- 【高市】「女は男のコンテンツに興味を持つが、男は女のコンテンツに興味を持たない」👈これ何で?🧐 [762037879]
