テストも書かないでリファクタリングとかうけるw
まずな、リファクタリングでは機能追加・修正は行わない。
動作はまったく同じでコードをきれいに書き換えること。
書き換えるといっても、これなら同じ動きだろ?って推測でやってはいけない。
まずテストを書く。ユニットテストをできるように、
単一のクラスでインスタンスを作る。
汚いコードなのだからたいていは依存関係のせいで単一ではクラスが生成できない
それを生成するために、クラスの動作を書き換える。
といっても元のコードは修正しない。継承やプリプロセッサを使って
依存関係を断ち切るために既存のコードを上書きする。
どうしてもそれが不可能な場合には、決められた手順で最小のコード修正を行う
そうやって既存のクラスのユニットテストを行う。
それでやっとリファクタリングが行える。
既存のクラスのユニットテストを通るように新たなコードに修正、
もしくは新規作成して置き換える。
この手順と考え方を守ってないのはリファクタリングではない。
で?
探検
リファクタリングをただのコード修正と思ってる人へ
■ このスレッドは過去ログ倉庫に格納されています
2010/05/29(土) 17:25:56
806デフォルトの名無しさん
2017/02/09(木) 22:47:35.42ID:CNUBJX7I リファクタリングを行うタイミングを間違ってるんだよね
俺は何らかの機能修正とかでコードをいじるときに
関連するところを少しづつなおす
大抵が数行程度で10分もかからずに終わる
こまめに修正しないで、手遅れになってからやろうとするから
大規模になってしまって、別途工数が〜とかいう話になるんだよ。
手遅れになってしまったものを修正する工数がないからと
手遅れなコードのままさらにコードを追加するから
さらに手遅れになっていくんだろうが
俺は何らかの機能修正とかでコードをいじるときに
関連するところを少しづつなおす
大抵が数行程度で10分もかからずに終わる
こまめに修正しないで、手遅れになってからやろうとするから
大規模になってしまって、別途工数が〜とかいう話になるんだよ。
手遅れになってしまったものを修正する工数がないからと
手遅れなコードのままさらにコードを追加するから
さらに手遅れになっていくんだろうが
807デフォルトの名無しさん
2017/02/09(木) 22:59:39.83ID:lnTHGhne >>806
多分解ってると思うけどその言い方は誤解を生むと思うぞ。
リファクタリングと機能追加は明確に分けるべきで、リファクタリングして、テスト走らせて振る舞いが変わってない事を確認してから機能追加に入るべき
多分解ってると思うけどその言い方は誤解を生むと思うぞ。
リファクタリングと機能追加は明確に分けるべきで、リファクタリングして、テスト走らせて振る舞いが変わってない事を確認してから機能追加に入るべき
808デフォルトの名無しさん
2017/02/09(木) 23:07:28.39ID:Ra4XvV1b >>805
他人の否定はしてるけど、自分では何も言ってないよ君
他人の否定はしてるけど、自分では何も言ってないよ君
809デフォルトの名無しさん
2017/02/09(木) 23:07:33.91ID:2NAFiD3Z リファクタリング=上腕二頭筋
810デフォルトの名無しさん
2017/02/09(木) 23:12:13.46ID:CNUBJX7I >>807
うん。わかってる
> リファクタリングして、テスト走らせて振る舞いが変わってない事を確認してから機能追加に入るべき
どちらもあるよ。
機能追加してからリファクタリングする物の典型的な例がTDD
Red/Green/Refactor 通りの順番
うん。わかってる
> リファクタリングして、テスト走らせて振る舞いが変わってない事を確認してから機能追加に入るべき
どちらもあるよ。
機能追加してからリファクタリングする物の典型的な例がTDD
Red/Green/Refactor 通りの順番
811デフォルトの名無しさん
2017/02/10(金) 00:46:58.66ID:/WxwB06L どんどん別の手法がまざっていく洗脳馬鹿
812デフォルトの名無しさん
2017/02/10(金) 01:18:18.70ID:+KYQgfiL 別の手法ってなんの話だ?
813デフォルトの名無しさん
2017/02/10(金) 02:12:34.39ID:/WxwB06L >>810 のことだよ。
814デフォルトの名無しさん
2017/02/10(金) 02:25:45.27ID:+KYQgfiL > Red/Green/Refactor 通りの順番
これのことか?
Refactorはリファクタリングのことだよ
別の手法じゃなくて全く同じもの
これのことか?
Refactorはリファクタリングのことだよ
別の手法じゃなくて全く同じもの
815デフォルトの名無しさん
2017/02/10(金) 12:06:41.01ID:QRGeJWes 1.機能追加前にテスト書く
2.追加コード書く
3.テスト
4.ダメならテストに通るまでコードいじる
もしかしてこれもリファクタリング扱いしてるの?
2.追加コード書く
3.テスト
4.ダメならテストに通るまでコードいじる
もしかしてこれもリファクタリング扱いしてるの?
816デフォルトの名無しさん
2017/02/10(金) 12:38:04.04ID:+HewTgrG >>815
それはRed→Greenのところでしょ…
それはRed→Greenのところでしょ…
817デフォルトの名無しさん
2017/02/10(金) 21:26:25.38ID:1oBD+cZp 最近、特定のフラグ変数に関するif文の山をswitch構文に清書し直したんだけど、これってリファクタリング?
818デフォルトの名無しさん
2017/02/10(金) 21:34:25.32ID:/WxwB06L >>816
それさ、リファクタリングのいち定義であってリファクタリングではないから。
それさ、リファクタリングのいち定義であってリファクタリングではないから。
819デフォルトの名無しさん
2017/02/10(金) 21:35:50.89ID:/WxwB06L >>817
そのif文が変ならな。まともなif文なら書き換える必要がない。
そのif文が変ならな。まともなif文なら書き換える必要がない。
820デフォルトの名無しさん
2017/02/10(金) 21:37:35.22ID:/WxwB06L >>817
ただswitch文にすると仕様変更時にswitch文では対応できなくなる可能性があるので逆かもしれない。
ただswitch文にすると仕様変更時にswitch文では対応できなくなる可能性があるので逆かもしれない。
821デフォルトの名無しさん
2017/02/10(金) 21:42:51.54ID:+KYQgfiL >>817
確かにswitchでかけるならばifよりswitchの方が少しだけ見やすくなるけど、
大抵はリファクタリングにはならないよ
巨大なswitchもリファクタリングすべき対象となる
何がダメなのかというと比較の回数がifのときと変わってないから。
比較が多い=複雑なので、これは単なる書き方の違いでしかなくて
リファクタリングとまではいかない。重要なのは比較回数
じゃあどうすべきかというと、一番簡単な方法は
関数テーブル(ルックアップテーブル)を使う方法
大量のswitchでの比較が条件が揃えば0個にまで減る
確かにswitchでかけるならばifよりswitchの方が少しだけ見やすくなるけど、
大抵はリファクタリングにはならないよ
巨大なswitchもリファクタリングすべき対象となる
何がダメなのかというと比較の回数がifのときと変わってないから。
比較が多い=複雑なので、これは単なる書き方の違いでしかなくて
リファクタリングとまではいかない。重要なのは比較回数
じゃあどうすべきかというと、一番簡単な方法は
関数テーブル(ルックアップテーブル)を使う方法
大量のswitchでの比較が条件が揃えば0個にまで減る
822デフォルトの名無しさん
2017/02/10(金) 21:46:49.78ID:+KYQgfiL823デフォルトの名無しさん
2017/02/10(金) 21:57:11.80ID:+KYQgfiL * Green
1.機能追加前にテスト書く
* Red
2.追加コード書く
3.テスト
4.ダメならテストに通るまでコードいじる
5.テストに通った。やったー完成だ! ←ふざけんじゃないよ。なんだこのコピペだらけで無駄がばかりのクソコードは
* Green
6.リファクタリングする
7. 読みやすくなりました。←このコードならレビューする気になる。シンプルあとで読んだ人も理解しやすいだろう
8. 完成、1に戻る
1.機能追加前にテスト書く
* Red
2.追加コード書く
3.テスト
4.ダメならテストに通るまでコードいじる
5.テストに通った。やったー完成だ! ←ふざけんじゃないよ。なんだこのコピペだらけで無駄がばかりのクソコードは
* Green
6.リファクタリングする
7. 読みやすくなりました。←このコードならレビューする気になる。シンプルあとで読んだ人も理解しやすいだろう
8. 完成、1に戻る
824デフォルトの名無しさん
2017/02/10(金) 22:00:06.48ID:+KYQgfiL 現実にはこの5. テストに通っただけの状態で
完成としてしまうやつが多いんだよな。
そういうコードで許される環境っていうのは
コードレビューが行われていない。
コードを見ずにテストに通ればOKとしてしまう環境
そして向かうはデスマーチw
完成としてしまうやつが多いんだよな。
そういうコードで許される環境っていうのは
コードレビューが行われていない。
コードを見ずにテストに通ればOKとしてしまう環境
そして向かうはデスマーチw
825デフォルトの名無しさん
2017/02/10(金) 22:14:40.62ID:/WxwB06L 駄目だこりゃ。なんでそういう手順がリファクタリングなのか?
826デフォルトの名無しさん
2017/02/10(金) 22:20:09.64ID:+KYQgfiL >>825
お前が理解してないだけだよw
お前が理解してないだけだよw
827デフォルトの名無しさん
2017/02/10(金) 22:33:35.95ID:+HewTgrG Refactorとリファクタリングが同じ意味の言葉だってのが伝わってないのかも知れないな
828デフォルトの名無しさん
2017/02/10(金) 22:38:11.34ID:+KYQgfiL あ、はい間違えました
> 6.リファクタリングする
これじゃ リファクタリンギング ですねw
> 6.リファクタリングする
これじゃ リファクタリンギング ですねw
829デフォルトの名無しさん
2017/02/10(金) 22:59:58.18ID:/WxwB06L このスレってそもそも特定のリファクタリング作業のスレッドか。話がかみ合わないわけだ。
830デフォルトの名無しさん
2017/02/10(金) 23:48:55.17ID:+KYQgfiL 誰が特定のリファクタリング作業の話をしてるんだ?
誰がはどうでもいいや「特定の」ってどれのことだよ?
誰がはどうでもいいや「特定の」ってどれのことだよ?
831デフォルトの名無しさん
2017/02/11(土) 00:00:12.78ID:o1zrWG0U TDDの例出したからTDDに限定した話だって勘違いしてるんでしょ
832デフォルトの名無しさん
2017/02/11(土) 00:04:14.10ID:p/3UeWk3 >>829
「特定の」がなにか言うだけだよ。
お前がちゃんと考えて発言しているなら
簡単な質問なはずだが?
もっとも俺はお前が何も考えてないってことを
あぶり出すために「特定の」が何か聞いたんだけどなw
「特定の」がなにか言うだけだよ。
お前がちゃんと考えて発言しているなら
簡単な質問なはずだが?
もっとも俺はお前が何も考えてないってことを
あぶり出すために「特定の」が何か聞いたんだけどなw
833デフォルトの名無しさん
2017/02/21(火) 23:44:51.93ID:8I0Tfvzv お、あぶり出してるねえ
834デフォルトの名無しさん
2017/02/22(水) 01:09:25.60ID:TiP/fttU このスレの存在忘れてたわw
なんだ逃げたのかw
なんだ逃げたのかw
835デフォルトの名無しさん
2017/02/22(水) 12:59:43.56ID:zJ9IFSdf >>423 >>426 のやつNot Foundになってた
リファクタリングの誤用
https://bliki-ja.github.io/RefactoringMalapropism/
リファクタリングの境界線
[見当たらない]
インタフェースの変更はリファクタリングか
https://bliki-ja.github.io/IsChangingInterfacesRefactoring/
未知のバグフィックスはリファクタリングか?
https://bliki-ja.github.io/IsFixingAnUnknownBugRefactoring/
最適化はリファクタリングか?
https://bliki-ja.github.io/IsOptimizationRefactoring/
宣言の順序変更はリファクタリングか?
https://bliki-ja.github.io/IsDeclarationOrderingRefactoring/
リファクタリングの誤用
https://bliki-ja.github.io/RefactoringMalapropism/
リファクタリングの境界線
[見当たらない]
インタフェースの変更はリファクタリングか
https://bliki-ja.github.io/IsChangingInterfacesRefactoring/
未知のバグフィックスはリファクタリングか?
https://bliki-ja.github.io/IsFixingAnUnknownBugRefactoring/
最適化はリファクタリングか?
https://bliki-ja.github.io/IsOptimizationRefactoring/
宣言の順序変更はリファクタリングか?
https://bliki-ja.github.io/IsDeclarationOrderingRefactoring/
836デフォルトの名無しさん
2017/02/23(木) 18:03:32.56ID:G3lxPXWh 定義から定まってないからなリファクタリングって
いや、実在するのか?
いや、実在するのか?
837デフォルトの名無しさん
2017/02/23(木) 22:07:14.34ID:Ka1UMSVA 殆どの用語は定義なんか定まってないよ
数学でさえ、ある用語に対して数学ではこういう定義で
使いましょうと決めているだけ
数学でさえ、ある用語に対して数学ではこういう定義で
使いましょうと決めているだけ
838デフォルトの名無しさん
2017/02/26(日) 20:54:48.09ID:wNjUkQs3 ソースを組んだときと今とでチンコのポジションを若干変更した
これがリファクタリングである
これがリファクタリングである
839デフォルトの名無しさん
2017/02/26(日) 22:44:41.65ID:zOBszuQK 特定の統合開発環境のリファクタリング機能をリファクタリングだと言ってるやつはいなくなったなw
840デフォルトの名無しさん
2017/02/27(月) 01:14:12.49ID:IXzsv4Rb 俺の中では変数名の変更=リファクタリング
Visual Studioの機能名がそうだったから
Visual Studioの機能名がそうだったから
841デフォルトの名無しさん
2017/02/27(月) 01:49:20.76ID:j4xHFZFw 俺の中では、マーチン ファウラーのリファクタリング本(古い方)に
のっているのがリファクタリング
変数名の変更ももちろんのってる
後はそのリファクタリングをどれだけ簡単に
正確に行えるかの違い。
ローカルスコープ程度で済むものなら良いけど
スコープが広い部分のリファクタリングは手動でやるのは大変
それを自動的に間違いなく行える、静的型付け言語+IDEの力は偉大
のっているのがリファクタリング
変数名の変更ももちろんのってる
後はそのリファクタリングをどれだけ簡単に
正確に行えるかの違い。
ローカルスコープ程度で済むものなら良いけど
スコープが広い部分のリファクタリングは手動でやるのは大変
それを自動的に間違いなく行える、静的型付け言語+IDEの力は偉大
842デフォルトの名無しさん
2017/02/27(月) 02:49:09.61ID:Ydy+ZWkb あるスコープの中で外部から見た仕様を変えずに内部の設計を変えるのがリファクタリング
843デフォルトの名無しさん
2017/02/27(月) 17:22:25.25ID:IXzsv4Rb >>842
それではチンコのポジションも
それではチンコのポジションも
844デフォルトの名無しさん
2017/02/27(月) 22:10:17.46ID:Ydy+ZWkb チンポジ設計
845デフォルトの名無しさん
2018/05/23(水) 23:04:38.11ID:Au5e7VGg 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
K2FKH
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
K2FKH
846デフォルトの名無しさん
2018/07/04(水) 23:04:33.21ID:gFgZc5FG GKH
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★5 [BFU★]
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- 【悲報】SANA、発言撤回拒否 [769931615]
- カルピスみたいに水で薄めるジュースでおすすめ他にない?
- 米シンクタンク「アメリカは台湾問題で"あいまい戦略"を取っている。高市早苗はこの方針から逸脱している」 [603416639]
- 岡田克也「軽々しく存立危機事態とか言うべきじゃない」高市早苗「台湾で武力攻撃が発生したらどう考えても日本の存立危機事態」 [931948549]
- ジャーナリストがテレビで解説「台湾問題は高市総理から言ったのではなく、立憲民主が日本の対応可能能力を暴こうとしたから」 [359572271]
- 俺性格悪いなって思った瞬間あげてけ
