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

■ このスレッドは過去ログ倉庫に格納されています
2018/04/15(日) 13:13:44.63
機能追加や変更した時に、全部テストしてるでしょ?
いつもやってることじゃん
2018/04/21(土) 00:26:03.25
>>203
何度も書いた。コピペしかしないよ?
2018/04/21(土) 00:26:42.60
リファクタリングをしたから具体的にどういうコードがどうなってそれでどのくらい得になるのかわからない
2018/04/21(土) 00:27:48.92
>>205
え?説明になってないじゃん
2018/04/21(土) 00:28:36.97
>>206
そういう実例が書いてある本を紹介すればいいの?
2018/04/21(土) 00:29:13.26
>>207
ん? すでに過去レスで書いたって言ってるんだけど、
お前はどのレスが「説明」だと思ったの?
2018/04/21(土) 00:29:45.71
肝心のマーチン本からして何が得なのかよくわからん有様
2018/04/21(土) 00:31:35.22
本読んでもコードがどうなるかも分からんの?
2018/04/21(土) 00:33:26.89
理解がちょっとづつ歪んでいくな
リファクタでも同じように処理をちょっとずつゆがめて気が付かずにいるにちがいない
2018/04/21(土) 00:33:29.19
>>209
いや、ここまでそんなレス1つも無いから
2018/04/21(土) 00:35:02.56
https://blogs.yahoo.co.jp/mathweather4067/5819997.html

> 指導のポイント
> ここの指導は、難しい。なかなか理解されないのが、現状です。
>
> まずは、「等式の性質」を思い出させることが必要でしょう。
>
> 次に、「1次方程式の解法」も思い出させます。
>
> その後、1次方程式の解法と対比させながら、進めていきます。
>
> 「等式の変形」は、等式をその目的に応じて変形することの良さが理解できていないと、
> 何のためにするのかがわからないまま、機械的に進めてしまいます。
>
> 導入部分を大事にしたいですね。


まさにコレだな
2018/04/21(土) 00:35:26.46
>>213
でも説明なってないと判断したレスがあるわけでしょう?
2018/04/21(土) 00:35:28.22
>>212
自分の都合のいいように捏造と曲解ばっかりしてるよね
一度もまともな実績がないくせに何で役に立つって言うんだろうね
どうせ数字も捏造してんだろう
2018/04/21(土) 00:38:32.40
>>216
曲解って俺が先に指摘したんだけど、
言われて悔しかったからって自分も使おうとしないでよw
どれが曲解かを指摘してない以上意味ないよ
2018/04/21(土) 00:42:39.66
いやリファクタ野郎のことね
2018/04/21(土) 00:43:50.39
お前のことだよw
2018/04/21(土) 00:45:19.25
>>214
そいつの説明が悪すぎる、良さってなんやねん

理解してもらえないのではない
自分が理解もせずに良いものだと思い込んでいるだけだ

本当に理解してたら必要性や可能になることを明確に説明できるはず
2018/04/21(土) 00:53:21.22
本当に理解している本の作者が
十分以上に説明してるんだけどなぁ
2018/04/21(土) 00:57:49.37
修正ってほんの数行程度なのに対して
リファクタリングってほぼ全域書き換えでしょ?
そりゃ影響範囲が違いすぎるよ
2018/04/21(土) 01:00:47.75
読んだ上でいってんのか?

142 自分:仕様書無しさん[sage] 投稿日:2018/04/19(木) 00:37:19.05
>>141
重要なのは手遅れになる前にこまめにやることだよね

大規模リファクタリングなんてのはあってはだめ
リファクタリングだけのための作業なんて持っての他
2018/04/21(土) 01:19:48.95
大規模リファクタリングもありえるよ
こまめにって言ってるのは、せいぜい関数レベルのリファクタリングの話でしょ
まだそれぐらいしか任せてもらえない立場なのかもしれないが、リファクタリングってそれだけじゃないから
2018/04/21(土) 06:51:17.73
じゃこう考えよう

リファクタリングは
テストコードのデバッグ
226仕様書無しさん
垢版 |
2018/04/21(土) 07:13:19.41
もうコーディング=リファクタリングでええやん
2018/04/21(土) 07:29:41.93
>>222
あほすwww
2018/04/21(土) 08:09:45.92
なんで、こんな派遣すら首になるようなリファクタバカを相手にしてるの?

基地外に何言っても無駄だよ。
相手の言葉を聞く能力がないからキチガイにして派遣すら首になってんだから。
2018/04/21(土) 08:59:08.52
>>223
214のどこを読めばそのレスとつながるのか
ID出ない板で自分がわかれば相手もわかるとか思ってるとか
2018/04/21(土) 09:04:26.73
あれ?
2018/04/21(土) 10:33:35.84
>>229
なぜ>>214に対してのレスだと思ったのか?
2018/04/21(土) 11:12:38.42
なぜだろう
2018/04/21(土) 11:24:43.22
>>224
それって
リファクタリングじゃなくて
リプレース
234仕様書無しさん
垢版 |
2018/04/21(土) 12:10:29.62
どんなきれいなソースコードでも
プログラムから仕様を起こすのは大変

だから現場が仕様を忘れる前に、再開発をするのが正しい

つまり、リファクタリングなんぞ不要
2018/04/21(土) 12:12:22.10
やっぱ
日本人のソフト開発って
土木工事想定なのな
236仕様書無しさん
垢版 |
2018/04/21(土) 12:14:21.71
日本は土建と同じ構造

世界は基本的に内製
2018/04/21(土) 23:35:59.80
CIAすらアマゾンに開発委託したってのに
2018/04/22(日) 00:00:17.09
>>233
リプレースとリファクタリングを混同するな
2018/04/22(日) 06:53:14.54
>>238
区別の仕方は?
2018/04/22(日) 08:54:37.71
リプレースって、普通の文脈だとシステム置き換えじゃねーの?
コード周りの文脈でリプレースなんて表現するのか?
2018/04/22(日) 11:36:40.79
>大規模リファクタリングもありえるよ

大規模リファクタリングとは
リプレイスの事ではないかと言う主張だよ
2018/04/22(日) 11:37:50.25
どうでもいい
2018/04/22(日) 11:52:15.63
リプレースってハードウェア更新でしょ?
5年ごとにハードウェアを最新にして、ついでにソフトウェアも新ハード新OS向けにテストしますよと
で、ほとんどはリビルドで済む話だけど
どさくさにまぎれてちょっと不具合修正しましょうとか機能追加して欲しいとなる
そこにリファクタリングする余地は確かに出てくる
本来必要ないのに修正するという意味ではいかにもリファクタリングだ
2018/04/22(日) 12:18:50.50
>>243
ずいぶん狭い世界で生きてるんだね
2018/04/22(日) 12:33:53.96
>>244
転職経験2桁だけど何かいいたいことある?
2018/04/22(日) 14:21:37.97
大規模リファクタリングなんてあってはならないと言っちゃった以上、「俺のリファクタリング」より大規模なものは、
リプレースでもなんでもいいけどリファクタリング以外のなにかでないと困るんだもんね
2018/04/22(日) 14:31:39.67
>>245
狭いね
2018/04/22(日) 14:34:41.97
>>245
ただのクズやんwww
2018/04/22(日) 14:48:42.49
>>246
リファクタリングの定義は、外部的振る舞いを変えずに
理解や修正が簡単になるように内部構造を改善することなんだが
お前の言うリプレースっていうのは、外部的振る舞いを変えないものってことか?
2018/04/22(日) 14:49:01.88
> リプレースでもなんでもいいけどリファクタリング以外のなにかでないと困るんだもんね
普通にバージョンアップでは?
2018/04/22(日) 14:49:53.01
>>245
www
2018/04/22(日) 14:52:10.53
>>246
> 大規模リファクタリングなんてあってはならないと言っちゃった以上

お前意味分かってんのか?

大規模リファクタリングなんてあってはいけないっていうのは
許されるのは小規模(せいぜい中規模)リファクタリングまでで
リファクタリングだけを大規模にやってはいけないないってことなんだが?
2018/04/22(日) 14:56:24.55
なんで大規模リファクタリングがあってはならないのかというと
リファクタリングは、機能変更の中に含まれる、
通常のソースコード変更時に、こまめに行うものだから

大規模リファクタリングが必要になるのは、こまめにリファクタリングしてないで
ソースコードをどんどん劣化させ、限界がきたから作り直す
(それもリファクタリングではない手法で)となってる場合が多い。

大規模リファクタリングのほとんどは単なる改修という意味になっていて
リファクタリングとなってない事が多い
2018/04/22(日) 14:58:32.10
>>243
> 本来必要ないのに修正するという意味ではいかにもリファクタリングだ

何だその定義?
外部的振る舞いを変えずに理解や修正が簡単になるように
内部構造を改善することだけが「いかにもリファクタリング」って
言って良いんだよ。

必要ないのに修正するのがリファクタリングなんて定義初めて聞いたわw
どーこーの、定義ですか?ソースくださいw
2018/04/22(日) 15:01:25.15
>>243

> で、ほとんどはリビルドで済む話だけど
> どさくさにまぎれてちょっと不具合修正しましょうとか
それは不具合修正であってリファクタリングではない
(外部的振る舞いが変わっている)

> 機能追加して欲しいとなる
それは機能追加であってリファクタリングではない
(外部的振る舞いが変わっている)


リファクタリングというのは、不具合修正や機能追加を行う際に
行うもので、不具合修正や機能追加でやる内容の一部
リファクタリング or 不具合修正 or 機能追加 ではない

不具合修正(リファクタリング含む) or 機能追加(リファクタリング含む)
である
256仕様書無しさん
垢版 |
2018/04/22(日) 15:05:42.64
>>247
そんなことないと思うけど

>>248
そんなことないと思うけど
一社童貞のやつよりよっぽどマシ
2018/04/22(日) 15:14:25.01
>>249
俺自身は発言の中でリプレースとはどういうものかとはなにも規定してませんが
まぁ外部的振る舞いという面で考えると、変わる場合もあれば変わらない場合もあるよね当然
で、たまたま外部的振る舞いが変わらなかったとしても、それをリファクタリングとは呼ばないよね
2018/04/22(日) 15:15:34.88
>>252
中規模って具体的には?
2018/04/22(日) 15:20:59.81
>>256
なぜ?
2018/04/22(日) 15:21:57.33
> で、たまたま外部的振る舞いが変わらなかったとしても、それをリファクタリングとは呼ばないよね

そりゃそうだろうね。
リファクタリングは動きを変えないために、
特定の手順にしたがってソースコードを修正する

http://shop.ohmsha.co.jp/shopdetail/000000003881/
ここの詳細目次の、5章(は解説なので正確には6章)から
その手順がリファクタリング・カタログとしてまとめられてる。
これを読むと、このやり方なら動きが変わるわけないなってわかるはず。

そしてもう一つ重要なのはテスト。テストによって
外部的振る舞いが変わらないことを保証する
だから、たまたま外部的振る舞いが変わらないっていうのは
テストを実行してないんじゃないかと思われる

テストを実行して、外部的振る舞いが変わらないのを確認するのが
リファクタリングだから、修正のたびに何度も "意図的に" 外部的振る舞いが
変わってないことを確認してる(だからたまたまなんて思わない)
2018/04/22(日) 15:23:41.48
>>253
普段の改修の中でこまめに行うものだけがリファクタリングじゃないよ
プログラム全体に波及するような設計の変更は、ボーイスカウトルールに則ってるだけじゃやれないからね
2018/04/22(日) 15:24:49.90
意図的に外部的振る舞いが変わらない形で修正して
確認するのがリファクタリングだから、
たまたま動きが変わらないのは、単なるソースコードの変更ってことか
多いんだよな、単なるソースコードの変更をリファクタリングとか言ってるやつ
2018/04/22(日) 15:25:29.52
>>261
プログラム全体に波及するような設計の変更を
こまめにやるってだけですが?
2018/04/22(日) 15:29:59.37
プログラム全体に波及するような設計の変更を
こまめにやるためのテクニックも↓に書いてありますよ。

> http://shop.ohmsha.co.jp/shopdetail/000000003881/
> ここの詳細目次の、5章(は解説なので正確には6章)から
> その手順がリファクタリング・カタログとしてまとめられてる。
> これを読むと、このやり方なら動きが変わるわけないなってわかるはず。

えいやってやるしかないと思ってるのは
単にその力がないだけ
2018/04/22(日) 15:32:00.64
テストしないでコード整理するのも時には必要
あまりにも悲惨なコードに短時間で多数の機能を追加しなきゃならん時とかね
多少のミスは割り切ってリファクタリングして機能追加して全体を手動テストして納品する
俺はこれをエクストリームリファクタリングと呼んでる
厳密なリファクタリング信者からすると気持ちわるいかもしれないが生産性は高い
266仕様書無しさん
垢版 |
2018/04/22(日) 15:35:23.66
>>258
ド素人か?
この業界で中規模と言ったら1000行以上、1万行未満のことだ
2018/04/22(日) 15:35:46.27
経験が少ないと、大規模リファクタリングの必要性に直面する状況が想像できないかもしれない
そういう場面も多々あるもんだけどね
268仕様書無しさん
垢版 |
2018/04/22(日) 15:35:59.41
>>259
井の中の蛙と大海の大ウミガメの違いと言えばおわかりになるでしょうか
2018/04/22(日) 15:39:24.39
>>265
うん。だから動きが変わるかもしれないわけでしょ?
それは単なる修正って言えば良いんだよ。
リファクタリングと呼ばなければいい

>>267
> 経験が少ないと、大規模リファクタリングの必要性に直面する状況が想像できないかもしれない
想像してるぞ?

こまめにリファクタリングしなかったから、
ソースコードに限界が来てしまった場合に
大規模リファクタリングになるって言ってるじゃないか
(そういう自体になる前にこまめにリファクタリングしよう)
2018/04/22(日) 15:40:10.62
>>265
そんなのファウラーの本に書いてあるか?
あの基本書の内容を踏襲していない行為をリファクタリングとは呼びませんよ?
2018/04/22(日) 15:40:31.92
>>267
× 経験が少ないと、大規模リファクタリングの必要性に直面する状況が想像できないかもしれない
○ 経験が少ないと、大規模 改修 の必要性に直面する状況が想像できないかもしれない

なんでリファクタリングじゃないものを
リファクタリングって呼ぶんですか?

リファクタリングを単なる改修の意味で使わないでください
2018/04/22(日) 15:41:21.46
>>270
> あの基本書の内容を踏襲していない行為をリファクタリングとは呼びませんよ?

そうですね。基本書の内容を踏襲していない行為は
リファクタリングと呼んではいけません。
ただの改修と言いましょう
2018/04/22(日) 15:42:30.64
なんで改修をリファクタリングって言いたいんだろう?
かっこつけたいのかな?
2018/04/22(日) 15:43:40.96
言葉の定義とかつまらんからもっと益になる話しようぜぇ

グローバル変数(public static 変数も含む)を安全に排除するリファクタリングテクニックについて議論しよう
リファクタリングするときいつもこれだけはスマートに解決できない
リスクを背負って修正するしかなくなる
2018/04/22(日) 15:46:22.63
大勃起リファクタリングと聞いて
2018/04/22(日) 15:49:05.55
>> 271
> なんでリファクタリングじゃないものを
> リファクタリングって呼ぶんですか?

お前にとっての「僕のリファクタリング」なんて知らんがな
2018/04/22(日) 15:54:49.49
動脈から直接リファクタリングを投与した
2018/04/22(日) 15:56:28.91
>>276
俺にとってのとかじゃなくて
リファクタリングの正しい定義だ
ちゃんと調べてこいよ。
単なる改修の意味で使うな
2018/04/22(日) 15:59:46.87
最初に書いたテストがリファクタリングの前後で同様に動くとは限らない
壊れたテストを書き直すのもリファクタリングの一部
2018/04/22(日) 16:02:17.79
>>268
意味不明
2018/04/22(日) 16:06:43.03
>>278
大規模なものは改修で、小規模なものはリファクタリング?
2018/04/22(日) 16:09:52.55
ここまで技術的な話題ゼロwwwマ板は素人しかいないってホントだったのか
2018/04/22(日) 16:10:33.85
>>281
なんでまた曲解するの?
2つの別々の話を混ぜないように

1. 大規模なものも小規模なものも外部的振る舞いが
変わらないようにちゃんとした手順で行って
テストで確認してるならリファクタリング
そうでないなら、単なる改修

2. 大規模リファクタリングが必要になるのは
普段からこまめにリファクタリングしてないから。
普段の改修の中でこまめにリファクタリングしていれば大規模なんて必要ない。
必要になるのは普段からリファクタリングしてなくて、
手遅れ状態になってる証拠。そういうのはあってはだめ
2018/04/22(日) 16:37:26.44
リファクタリングは小まめに行うべきか?
ある程度たまってから行うべきか?

結論:リファクタリングが不要になるように書け!
2018/04/22(日) 16:38:45.75
将来の改修や拡張の方向性がわからないのにんあことできるわけないだろ!
2018/04/22(日) 16:55:29.35
リファクタリングはソースの修正が必要だから行う
つまりソースの修正が必要なくなればいい
データベースでいうところの、UPDATEではなくINSERTになるようにすればいい
つまり、適切な粒度で関数(メソッド)を適切に作成すれば
リファクタリングは不要なのではないか?
例えば、1関数20行という教えはそういう意味も内包しているのではないか?

今までリファクタリングが必要になった場面を思い出して欲しい
やたら長い関数、スコープが不適切な変数、マジックナンバーやあり得ないelseの使い方などがほとんどではないだろうか?
本当にリファクタリングが必要な場面などほぼ無いはずである

もしリファクタリングが必要だというのであれば、それは清書を後回しにして適当に書きなぐることを優先した結果であり
そもそも「ソースを書いていない」わけである
漫画であればペン入れをしていない下書きやネームの状態、ガンプラでいえば接着剤を使わず仮組をした状態だ
もちろん、「正しく作る」ことよりも「とりあえず動く」ものを何よりも時間を優先して作ることが至上命題であることもあるだろう

それでも書道の名家は一発で何度でも美しい書体を生み出す
プログラマであっても一発で完全に美しいソースコードを生み出すスキルは必要なのではないだろうか?

以上のことから、「リファクタリングが不要になるように書け!」というのは正しいと言える
287仕様書無しさん
垢版 |
2018/04/22(日) 16:58:10.99
>>280
意味明瞭
2018/04/22(日) 16:58:35.06
>>286
あー、いや、テストファーストでは
最初にテストコードを書いて、
テストに通る最低限のコードを書いて
そのあとリファクタリングして
完成だから

つまりあんたの言う「ソースを書いている」状態にするまでに
リファクタリングをする。

ちょっと勉強し直してきて
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
テストファーストとリファクタリングは独立した概念です
2018/04/22(日) 17:08:57.78
>>290
テストファーストの手順の中に含まれるものだって話をしてるんだから
テストファースト=リファクタリングなわけないでしょw
お前の日本語の理解力の問題だ
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
テストファーストにリファクタリングは必要ありません
むしろテストファーストの目的を没却する悪手と言っていいでしょう
2018/04/22(日) 17:14:01.77
>>287
意味不明
298仕様書無しさん
垢版 |
2018/04/22(日) 17:14:35.76
テストファーストでリファクタリングが必要になるなら
テストの粒度が間違っている証拠です、にわかがよくやります
2018/04/22(日) 17:14:49.44
>>295
そりゃそうだろw
だからこそ、テストファーストしてから
リファクタリングするって話になる
2018/04/22(日) 17:14:49.71
>>297
意味明瞭
2018/04/22(日) 17:15:28.25
>>299
ではテストファーストとリファクタリングを一緒に語るのをやめるべきです
2018/04/22(日) 17:15:31.11
>>298
でも、ぐぐったけど、そんな事ないてないよ
ニワカはお前では?
2018/04/22(日) 17:15:38.76
テストしないでリファクタリングおっかない
304仕様書無しさん
垢版 |
2018/04/22(日) 17:16:22.76
>>302
ググらないとわからないならお前がにわかです
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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