テストも書かないでリファクタリングとかうけるw
まずな、リファクタリングでは機能追加・修正は行わない。
動作はまったく同じでコードをきれいに書き換えること。
書き換えるといっても、これなら同じ動きだろ?って推測でやってはいけない。
まずテストを書く。ユニットテストをできるように、
単一のクラスでインスタンスを作る。
汚いコードなのだからたいていは依存関係のせいで単一ではクラスが生成できない
それを生成するために、クラスの動作を書き換える。
といっても元のコードは修正しない。継承やプリプロセッサを使って
依存関係を断ち切るために既存のコードを上書きする。
どうしてもそれが不可能な場合には、決められた手順で最小のコード修正を行う
そうやって既存のクラスのユニットテストを行う。
それでやっとリファクタリングが行える。
既存のクラスのユニットテストを通るように新たなコードに修正、
もしくは新規作成して置き換える。
この手順と考え方を守ってないのはリファクタリングではない。
で?
探検
リファクタリングをただのコード修正と思ってる人へ
■ このスレッドは過去ログ倉庫に格納されています
2010/05/29(土) 17:25:56
401デフォルトの名無しさん
2014/08/02(土) 19:57:37.46ID:FIwNTFpf402デフォルトの名無しさん
2014/08/02(土) 20:03:28.32ID:DmU4GxTK 全部捨てて作り直しだーまで追い詰めるって馬鹿だと思う。
少しずつ変化させていくことができないからそうなるんだよね。
全部いっぺんに変えるなんて現実的じゃないんだから。
全部いっぺんに変えることは不可能。じゃあどうするか?
それに答えられないから、どんどん壊れていくんだよ。
まあ、少しづつ良くしていくことが出来るのも技術力なわけで。
それを頭でわかっているのと実行するのとは全然違うわけで、
その実行できる力ってのが技術力そのものなわけで。
少しずつ変化させていくことができないからそうなるんだよね。
全部いっぺんに変えるなんて現実的じゃないんだから。
全部いっぺんに変えることは不可能。じゃあどうするか?
それに答えられないから、どんどん壊れていくんだよ。
まあ、少しづつ良くしていくことが出来るのも技術力なわけで。
それを頭でわかっているのと実行するのとは全然違うわけで、
その実行できる力ってのが技術力そのものなわけで。
403デフォルトの名無しさん
2014/08/02(土) 20:19:36.36ID:q1w4boEu >>400
前向きってのは、コード書きの脳からデザイナーの脳に変われるように努力しろって事。
前向きってのは、コード書きの脳からデザイナーの脳に変われるように努力しろって事。
404デフォルトの名無しさん
2014/08/02(土) 20:23:43.06ID:DmU4GxTK >>403
何に逃げてるのさ?
両方できるようになるというのなら正しい意見だが、
別のものに逃げたらだめだろ。
まるでペンもイラレもろくに使えない奴が
発想力とかいうのに逃げているのと同じ。
コードをまともに書けるようになった上でデザイナーになることはできる。
だけど、コードから逃げてもデザイナーにはなれない。
何に逃げてるのさ?
両方できるようになるというのなら正しい意見だが、
別のものに逃げたらだめだろ。
まるでペンもイラレもろくに使えない奴が
発想力とかいうのに逃げているのと同じ。
コードをまともに書けるようになった上でデザイナーになることはできる。
だけど、コードから逃げてもデザイナーにはなれない。
405デフォルトの名無しさん
2014/08/02(土) 20:23:58.64ID:J1UwFk0L よくある設計とコーディングっていう役割分担からしてくるっとる。
プログラミングなんて、設計九割五分なのに。
実装なんざオマケのオマケ。
SEとプログラマ、とわけてプログラマがキーボード叩く役とか、きがくるっとる。
まぁ聡明なお前らの会社は違うだろうけどね。
プログラミングなんて、設計九割五分なのに。
実装なんざオマケのオマケ。
SEとプログラマ、とわけてプログラマがキーボード叩く役とか、きがくるっとる。
まぁ聡明なお前らの会社は違うだろうけどね。
406デフォルトの名無しさん
2014/08/02(土) 20:28:21.78ID:DmU4GxTK 「前向き」って言ってる奴が、
コードとデザインの両方を手に入れるじゃなくて、
コードから逃げてデザインを求めていて笑えるよ。
そういう奴は両方できない。
コードとデザインの両方を手に入れるじゃなくて、
コードから逃げてデザインを求めていて笑えるよ。
そういう奴は両方できない。
407デフォルトの名無しさん
2014/08/02(土) 20:33:33.15ID:a3/R4SSz やっぱり自分でコード書かなきゃやってる気がしない
408デフォルトの名無しさん
2014/08/03(日) 00:40:07.16ID:ppjITjjs もう最近ガチガチの詳細設計やるとこって殆ど無いだろ
コメント的仮想コードとかで詳細は終わらせちゃうところが多い
その方が柔軟だしな
コメント的仮想コードとかで詳細は終わらせちゃうところが多い
その方が柔軟だしな
409デフォルトの名無しさん
2014/08/03(日) 00:45:38.31ID:CSranqfK 一応UMLでシーケンス図とクラスとPublicメソッドだけはきっちり作ってるな
DBアクセスとかあたりまで
そっから先はprivateで実装して
アプリのフレームワークに依存しないメソッドとかクラスとかはプCommonフォルダに各自放り込んでもらう
で上手くいくと思ったけど
Commonがかなりカオスなことに
DBアクセスとかあたりまで
そっから先はprivateで実装して
アプリのフレームワークに依存しないメソッドとかクラスとかはプCommonフォルダに各自放り込んでもらう
で上手くいくと思ったけど
Commonがかなりカオスなことに
410デフォルトの名無しさん
2014/08/03(日) 07:51:54.04ID:KHwMExMo >>408
あー、主に非技術者がやる作業だね。
あー、主に非技術者がやる作業だね。
411デフォルトの名無しさん
2014/08/03(日) 07:57:18.76ID:mU4IZymt412デフォルトの名無しさん
2014/08/03(日) 10:20:01.47ID:1nxvzFtA まるで業務系しか仕事がないかの勢いw
413デフォルトの名無しさん
2014/08/03(日) 10:36:51.70ID:CSranqfK >>411
コードが酷いのは予想のうちだけど
あれだけ言ったのに、規約が守られずにアプリのフレームワークに依存が作られてる
最初あたりに誰かがやったせいで後続が真似して、手続きなんとなくまとめただけみたいな処理がいっぱい
関数の共通化もうまくいってなくて
例えば分かりやすいところでは文字列をバイト列に変換してパディングするって処理があるんだけど
SJisStringUtil.ToByte
DBCodeChanger.LeftPaddingByteArray
StringModel.BytesWithSpace
こんな感じでいっぱいできてる
挙句にsTanakaとかフォルダできてるしw
コードが酷いのは予想のうちだけど
あれだけ言ったのに、規約が守られずにアプリのフレームワークに依存が作られてる
最初あたりに誰かがやったせいで後続が真似して、手続きなんとなくまとめただけみたいな処理がいっぱい
関数の共通化もうまくいってなくて
例えば分かりやすいところでは文字列をバイト列に変換してパディングするって処理があるんだけど
SJisStringUtil.ToByte
DBCodeChanger.LeftPaddingByteArray
StringModel.BytesWithSpace
こんな感じでいっぱいできてる
挙句にsTanakaとかフォルダできてるしw
414デフォルトの名無しさん
2014/08/03(日) 10:42:19.36ID:KHwMExMo まあありがちやねw
だから規約を作った人は
必ずコードレビューをしなくてはいけない。
だから規約を作った人は
必ずコードレビューをしなくてはいけない。
415デフォルトの名無しさん
2014/08/03(日) 20:06:25.42ID:lk1xFWmM416デフォルトの名無しさん
2014/08/03(日) 21:25:01.28ID:LWW935BO ロングパスきっちり通せよw
417デフォルトの名無しさん
2014/08/03(日) 23:57:33.38ID:tNPEJw6R A社に発注して作らせた大規模なソフトを、
B社に一時的にメンテナンスさせて、
今はC社に機能拡張させているとか言う例が実際にあるからなー
それぞれがそレなりにちゃんとした会社であっても、
開発者の継続性が0の場合、
中のソースがかなり混乱するのは仕方ないかもしれん。
B社に一時的にメンテナンスさせて、
今はC社に機能拡張させているとか言う例が実際にあるからなー
それぞれがそレなりにちゃんとした会社であっても、
開発者の継続性が0の場合、
中のソースがかなり混乱するのは仕方ないかもしれん。
418デフォルトの名無しさん
2014/08/04(月) 22:06:42.37ID:w1xJJUBp リファクタリングはアートですよ。
アートは人間が生み出すものではありません。
ある日、天から降りてくるんです。
この感覚がわからない人は、アートしたことが無いんです。
つまり、リファクタリングもわからないってことです。
アートは人間が生み出すものではありません。
ある日、天から降りてくるんです。
この感覚がわからない人は、アートしたことが無いんです。
つまり、リファクタリングもわからないってことです。
419デフォルトの名無しさん
2014/08/04(月) 22:17:15.14ID:p5AMhKr8 わかる、わかるぜ〜
ソースコードがある書き方になりたがってねだってくるんだぜ〜
俺はそのとおりに書き写してるだけなんだぜ〜
ソースコードがある書き方になりたがってねだってくるんだぜ〜
俺はそのとおりに書き写してるだけなんだぜ〜
420デフォルトの名無しさん
2014/08/04(月) 22:19:31.15ID:w1xJJUBp やべえ。
適当ぶっこいてたらマジキチ召喚しちまった。
ちょっと反省。
適当ぶっこいてたらマジキチ召喚しちまった。
ちょっと反省。
421デフォルトの名無しさん
2014/08/04(月) 22:54:50.48ID:O7gnQe0p 自作自演乙
422デフォルトの名無しさん
2014/08/27(水) 12:13:22.10ID:RluTUsi0 他人のコードだと思って、何の前情報もない状態でコードを読み
そこから読み取れる情報だけで、「なんで?」って思う実装を減らしていくのがリファクタリング
もちろん、処理の効率とかをよくする場合もあるけど、
どっちかというと、そういうのよりも第三者が見て読みやすいコードである状態を保つ事のほうが重要
(リファクタリングで大幅に処理コストが改善できるような糞実装が最初にされてることは稀)
ただ、リファクタリングをできるレベルに達していない職場も少なくない
とくに業務系や人売りで奴隷を集めた職場とかは、大抵メンバーのスキルが足りてなさすぎて無理
っていうか設計(という名のゴミファイル作成)段階からそびえ立つうんこを作っていってるから、実装時は既に手遅れ
そこから読み取れる情報だけで、「なんで?」って思う実装を減らしていくのがリファクタリング
もちろん、処理の効率とかをよくする場合もあるけど、
どっちかというと、そういうのよりも第三者が見て読みやすいコードである状態を保つ事のほうが重要
(リファクタリングで大幅に処理コストが改善できるような糞実装が最初にされてることは稀)
ただ、リファクタリングをできるレベルに達していない職場も少なくない
とくに業務系や人売りで奴隷を集めた職場とかは、大抵メンバーのスキルが足りてなさすぎて無理
っていうか設計(という名のゴミファイル作成)段階からそびえ立つうんこを作っていってるから、実装時は既に手遅れ
423デフォルトの名無しさん
2014/09/04(木) 15:14:28.47ID:NCM4vLJB リファクタリングの誤用
ttp://capsctrl.que.jp/kdmsnr/wiki/bliki/?RefactoringMalapropism
リファクタリングの境界線
ttp://capsctrl.que.jp/kdmsnr/wiki/bliki/?RefactoringBoundary
ttp://capsctrl.que.jp/kdmsnr/wiki/bliki/?RefactoringMalapropism
リファクタリングの境界線
ttp://capsctrl.que.jp/kdmsnr/wiki/bliki/?RefactoringBoundary
424デフォルトの名無しさん
2014/09/13(土) 02:08:52.13ID:Bjr83Kqx ボキもリファクタリングして欲しいです
https://twitter.com/y_konogi/status/510266774290694144/photo/1
https://twitter.com/y_konogi/status/510266774290694144/photo/1
425デフォルトの名無しさん
2014/09/13(土) 02:46:33.71ID:99VHFg4q ちんこの振る舞いを保持したまま変化させる、もちろん性的な意味で。
426デフォルトの名無しさん
2014/09/13(土) 03:35:58.05ID:WOkelzJA インタフェースの変更はリファクタリングか
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?IsChangingInterfacesRefactoring
> 答えは簡単――インタフェースの変更はリファクタリングだ。
未知のバグフィックスはリファクタリングか?
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?IsFixingAnUnknownBugRefactoring
> 私はリファクタリングと呼べると思う。 バグを含んだ振る舞いを知らなかった(あるいは気にしなかった)わけだから、
> これは「外部から見たときの振る舞い」ではないのだ。 たとえバグに気付いていたとしても、
> それが気にするようなバグでなければ、 リファクタリングと呼んでもよいと思う。
最適化はリファクタリングか?
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?IsOptimizationRefactoring
> 最適化とリファクタリングはどちらも変化を伴うものだが(なかには最適化かつリファクタリングとなる変化もあるが)、
> 両者は別物だと私は考えている。なぜなら、両者の目的が異なるからである。リファクタリングは、
> コードを理解しやすくするためである。最適化は、プログラムを速くするためである。
> つまり、リファクタリングと最適化は似ており、共通する変更がありはするものの、目的が異なるため、両者は別物であると私は考えている。
宣言の順序変更はリファクタリングか?
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?IsDeclarationOrderingRefactoring
> 宣言(Javaで言うメソッドやフィールド)の順序を変更することは、リファクタリングと呼べるのか?
> リファクタリングの定義で、 「理解や修正が簡単になるように」というフレーズを使った。
> 宣言部分を変更すると、理解や修正が簡単になるのだろうか? 私は、そういう場合もあると思う。
> ソフトウェアの内部構造を変更しないという点が紛らわしいかもしれない。 リネームしても実行内容は変化しない。
> だがリネームは、プログラムの理解度を向上させる 非常に重要なリファクタリングの一種である。
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?IsChangingInterfacesRefactoring
> 答えは簡単――インタフェースの変更はリファクタリングだ。
未知のバグフィックスはリファクタリングか?
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?IsFixingAnUnknownBugRefactoring
> 私はリファクタリングと呼べると思う。 バグを含んだ振る舞いを知らなかった(あるいは気にしなかった)わけだから、
> これは「外部から見たときの振る舞い」ではないのだ。 たとえバグに気付いていたとしても、
> それが気にするようなバグでなければ、 リファクタリングと呼んでもよいと思う。
最適化はリファクタリングか?
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?IsOptimizationRefactoring
> 最適化とリファクタリングはどちらも変化を伴うものだが(なかには最適化かつリファクタリングとなる変化もあるが)、
> 両者は別物だと私は考えている。なぜなら、両者の目的が異なるからである。リファクタリングは、
> コードを理解しやすくするためである。最適化は、プログラムを速くするためである。
> つまり、リファクタリングと最適化は似ており、共通する変更がありはするものの、目的が異なるため、両者は別物であると私は考えている。
宣言の順序変更はリファクタリングか?
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?IsDeclarationOrderingRefactoring
> 宣言(Javaで言うメソッドやフィールド)の順序を変更することは、リファクタリングと呼べるのか?
> リファクタリングの定義で、 「理解や修正が簡単になるように」というフレーズを使った。
> 宣言部分を変更すると、理解や修正が簡単になるのだろうか? 私は、そういう場合もあると思う。
> ソフトウェアの内部構造を変更しないという点が紛らわしいかもしれない。 リネームしても実行内容は変化しない。
> だがリネームは、プログラムの理解度を向上させる 非常に重要なリファクタリングの一種である。
427デフォルトの名無しさん
2014/09/13(土) 13:49:13.80ID:9aicrkfD あれもこれも取り入れた「オブジェクト指向」とまるっきり同じパターンだな
どんどん曖昧な意味になりそう
どんどん曖昧な意味になりそう
428デフォルトの名無しさん
2014/09/13(土) 14:14:43.12ID:Fgrmdz5F すべてリファクタリングの結果発生する作業だろ。
まったく理解できていないな。まさに本末転倒
まったく理解できていないな。まさに本末転倒
429デフォルトの名無しさん
2014/09/13(土) 16:14:30.25ID:WJGPx/6o 要件を仕様にまとめるのもリファクタリングですか?
430デフォルトの名無しさん
2014/09/13(土) 20:28:39.39ID:Y1nBtaE7 >>429
リファクタリングの一部ではあるな
リファクタリングの一部ではあるな
431デフォルトの名無しさん
2014/09/13(土) 20:33:35.66ID:zttb1Mfl OpenSSLがリファクタリングされまくっているな
432デフォルトの名無しさん
2014/09/14(日) 00:35:49.32ID:a/rqPd2y >>429
違う
> リファクタリング中に2,3日システムが動かなくなっちゃってーなどと言ってる奴がいたら、
> んなもんリファクタリングじゃあなーいと言ってやれ。 ドキュメントをリファクタリングしちゃるとか言ってる奴、
> それもリファクタリングじゃねーぞコラ。 そういうのは、リストラクチャリング(再構築)というのだッ
違う
> リファクタリング中に2,3日システムが動かなくなっちゃってーなどと言ってる奴がいたら、
> んなもんリファクタリングじゃあなーいと言ってやれ。 ドキュメントをリファクタリングしちゃるとか言ってる奴、
> それもリファクタリングじゃねーぞコラ。 そういうのは、リストラクチャリング(再構築)というのだッ
433デフォルトの名無しさん
2014/09/14(日) 02:43:07.06ID:XHTMIvTT 客の要件はそのままプログラムにできるけど、
それじゃあ最適化できてないから
外面の挙動は変わらない範囲で最適化を行う。
コードの実体だけがリファクタリングの対象じゃないだろ。
それじゃあ最適化できてないから
外面の挙動は変わらない範囲で最適化を行う。
コードの実体だけがリファクタリングの対象じゃないだろ。
434デフォルトの名無しさん
2014/09/14(日) 03:54:19.00ID:a/rqPd2y435デフォルトの名無しさん
2014/09/14(日) 10:24:07.39ID:NZ+I8Nx6 最適化じゃないんだよ
最適化なんかできるわけねーだろってのが大前提なんだよ
最適化なんかできるわけねーだろってのが大前提なんだよ
436デフォルトの名無しさん
2014/09/14(日) 13:02:21.11ID:bjSSfYoR バグも含めて機能そのままで、構造だけ変える(良くするつもり)ができるっていうのが結構単純な
還元主義的な思い込みで、実際の構造物は両者は一体というか、都合良くできないと思うんだよね。
テスト駆動とかもそうだけど、この種のスローガンが胡散臭いのは、物作りの本質的な困難を直視
しないで、小手先の技法を当てはめれば解決みたいに喧伝しすぎるところにあるんじゃないかと思う。
還元主義的な思い込みで、実際の構造物は両者は一体というか、都合良くできないと思うんだよね。
テスト駆動とかもそうだけど、この種のスローガンが胡散臭いのは、物作りの本質的な困難を直視
しないで、小手先の技法を当てはめれば解決みたいに喧伝しすぎるところにあるんじゃないかと思う。
437デフォルトの名無しさん
2014/09/14(日) 14:21:12.62ID:TJC+Xrrg 別に胡散臭いとは思わないが、真に受けちゃったバカが「リファクタリング最強!」とか言い出すのはかなりうざい。
438デフォルトの名無しさん
2014/09/14(日) 15:42:46.67ID:a/rqPd2y >>436
> バグも含めて機能そのままで、構造だけ変える(良くするつもり)ができるっていうのが結構単純な
> 還元主義的な思い込みで、
できるよ。
というか、リファクタリングは構造を良くしましょう(終わり)じゃなくて、
構造を良くするのは当然の話しとして、機能をそのままにするためにはどうすればいいか?
って所が出発点で、
機能をそのままにするために、編み出された様々なテクニックが
リファクタリング手法なんだよ。
できないというのなら、リファクタリング手法(それには名前が付いている)
一つ一つに対して出来ない根拠を述べてみてよ。
君は単に、リファクタリングに手法があることを知らないで、
闇雲に自己流でなおそうとしてみて失敗しただけでしょう?
> バグも含めて機能そのままで、構造だけ変える(良くするつもり)ができるっていうのが結構単純な
> 還元主義的な思い込みで、
できるよ。
というか、リファクタリングは構造を良くしましょう(終わり)じゃなくて、
構造を良くするのは当然の話しとして、機能をそのままにするためにはどうすればいいか?
って所が出発点で、
機能をそのままにするために、編み出された様々なテクニックが
リファクタリング手法なんだよ。
できないというのなら、リファクタリング手法(それには名前が付いている)
一つ一つに対して出来ない根拠を述べてみてよ。
君は単に、リファクタリングに手法があることを知らないで、
闇雲に自己流でなおそうとしてみて失敗しただけでしょう?
439デフォルトの名無しさん
2014/09/14(日) 15:44:54.17ID:a/rqPd2y なんだ、自分で自白してるじゃんかw
> この種のスローガン
スローガンとしか認識していないw
リファクタリングは、数学的な証明と
なんらかわらないんだが。
> この種のスローガン
スローガンとしか認識していないw
リファクタリングは、数学的な証明と
なんらかわらないんだが。
440デフォルトの名無しさん
2014/09/14(日) 18:12:37.41ID:d9eejC+C ダメなコードは直すことでよくできる
という公理が大前提
1000行もあるようなおバカ関数を数学的に定式化して改善するのは無意味なこと
見れば何をすべきかわかる
という公理が大前提
1000行もあるようなおバカ関数を数学的に定式化して改善するのは無意味なこと
見れば何をすべきかわかる
441デフォルトの名無しさん
2014/09/14(日) 18:52:51.74ID:a/rqPd2y442デフォルトの名無しさん
2014/09/14(日) 19:25:36.36ID:3Rt2m2d6 リファクタリングを知らない人は、
リファクタリングを一気に直してしまおうと
思っているに違いない。
リファクタリングが問題が起きることがありえない
小さな修正の繰り返しであることをしらない。
リファクタリングを一気に直してしまおうと
思っているに違いない。
リファクタリングが問題が起きることがありえない
小さな修正の繰り返しであることをしらない。
443デフォルトの名無しさん
2014/09/14(日) 19:30:47.61ID:NZ+I8Nx6 デザパタ信者みたいなのが暴走して悪評を広めてるんだろう
444デフォルトの名無しさん
2014/09/14(日) 19:32:04.00ID:3Rt2m2d6 その悪評を鵜呑みにしているのが
頭悪いと言われる所以なわけで。
自分の頭で考えろよとw
頭悪いと言われる所以なわけで。
自分の頭で考えろよとw
445デフォルトの名無しさん
2014/09/14(日) 21:08:34.07ID:oiv3svus リファクタリング
446デフォルトの名無しさん
2014/09/15(月) 00:27:34.64ID:irRiVyM3 流石に数学の定理と同等か言い過ぎだろ。
パターンと同じでさ、セオリーやメソッドじゃない、ちょっとしたコツの集積だろ
オブジェクト指向、CMMI、PMBOKとかと同じでさ、アメリカ人の教授とかはそういうのまとめて
自分が言い出しっぺになって、学会ごっこしたり、資格試験の元締めやろうとしたりするのが好きなんだよ。
そういう商売に乗せられているだけなのに、さも学術的な根拠があるものとして「勉強」したりするのが
偉いと思っている奴はどっかオツムが弱いとしか言いようがないw
パターンと同じでさ、セオリーやメソッドじゃない、ちょっとしたコツの集積だろ
オブジェクト指向、CMMI、PMBOKとかと同じでさ、アメリカ人の教授とかはそういうのまとめて
自分が言い出しっぺになって、学会ごっこしたり、資格試験の元締めやろうとしたりするのが好きなんだよ。
そういう商売に乗せられているだけなのに、さも学術的な根拠があるものとして「勉強」したりするのが
偉いと思っている奴はどっかオツムが弱いとしか言いようがないw
447デフォルトの名無しさん
2014/09/15(月) 00:37:25.87ID:9UWhhSIJ >>446
数学の定理じゃなくて、数学の証明だろ?
a + b = c を b = c - a
に置き換えるようなもの。
式の変形だよ。
リファクタリングのテクニックっていうのはどれも
この式の変形と同じようなもの。
一部の人が勘違いしているように、ぶっ壊して同じように作りなおすことじゃなくて、
項の移動のように、全く同じ結果になる変形をしているにすぎないんだよ。
数学の定理じゃなくて、数学の証明だろ?
a + b = c を b = c - a
に置き換えるようなもの。
式の変形だよ。
リファクタリングのテクニックっていうのはどれも
この式の変形と同じようなもの。
一部の人が勘違いしているように、ぶっ壊して同じように作りなおすことじゃなくて、
項の移動のように、全く同じ結果になる変形をしているにすぎないんだよ。
448デフォルトの名無しさん
2014/09/15(月) 00:39:47.71ID:9UWhhSIJ449デフォルトの名無しさん
2014/09/15(月) 00:43:11.40ID:irRiVyM3 何が「警告」だよ
笑わせるな
笑わせるな
450デフォルトの名無しさん
2014/09/15(月) 00:44:52.76ID:9UWhhSIJ いや、普通に恥ずかしいでしょ?
ガリ勉ガリ勉いって勉強しない悪ガキ。
自分が後で困るというのに。
警告してあげないといつまでたっても
気づかないよ。
ガリ勉ガリ勉いって勉強しない悪ガキ。
自分が後で困るというのに。
警告してあげないといつまでたっても
気づかないよ。
451デフォルトの名無しさん
2014/09/15(月) 01:15:03.90ID:WaQuX0Y8 ぶっ壊して同じ結果が得られるように作り直すこととの違いを教えてください。
452デフォルトの名無しさん
2014/09/15(月) 01:41:27.21ID:j8xvklWY イチから作り直したい病と
現実の範囲で出来る事だけやる工夫の違い
現実の範囲で出来る事だけやる工夫の違い
453デフォルトの名無しさん
2014/09/15(月) 02:07:53.50ID:WaQuX0Y8 機能やクラスを抽出するのだって破壊を伴うんじゃないの。
リスクが少ない範囲での変更もあれば、
時には大胆なリファクタリングもあると思うけど。
リスクが少ない範囲での変更もあれば、
時には大胆なリファクタリングもあると思うけど。
454デフォルトの名無しさん
2014/09/15(月) 04:21:21.27ID:9UWhhSIJ >>451
> ぶっ壊して同じ結果が得られるように作り直すこととの違いを教えてください。
たとえば数学で、3x - 11 = 4 のxを求めるという問題があった時
1. 移項とい手法を使って、3x = 4 + 11 にして、
2. 足し算という手法を使って、3x = 15 にして
3. 両辺を同じ数で割るという手法を使って、x = 5
という風に、変形をしても等しいと証明されている
安全な手法を使ってシンプルな形に変形していくのがリファクタリング
>>453
大胆なリファクタリングって何よ?
まずさ、数学の式の変形のやり方と一緒で、
リファクタリング手法には名前があるって知ってる?
一覧見つけてきたから、これのどれが大胆で破壊を伴うのかちゃんと説明してくれ。
http://d.hatena.ne.jp/asakichy/20100607/1275877997
> ぶっ壊して同じ結果が得られるように作り直すこととの違いを教えてください。
たとえば数学で、3x - 11 = 4 のxを求めるという問題があった時
1. 移項とい手法を使って、3x = 4 + 11 にして、
2. 足し算という手法を使って、3x = 15 にして
3. 両辺を同じ数で割るという手法を使って、x = 5
という風に、変形をしても等しいと証明されている
安全な手法を使ってシンプルな形に変形していくのがリファクタリング
>>453
大胆なリファクタリングって何よ?
まずさ、数学の式の変形のやり方と一緒で、
リファクタリング手法には名前があるって知ってる?
一覧見つけてきたから、これのどれが大胆で破壊を伴うのかちゃんと説明してくれ。
http://d.hatena.ne.jp/asakichy/20100607/1275877997
455デフォルトの名無しさん
2014/09/15(月) 04:22:40.33ID:9UWhhSIJ456デフォルトの名無しさん
2014/09/15(月) 04:24:53.24ID:9UWhhSIJ >>452も少し勘違いしているね。
リファクタリングを「ソースコードを綺麗にしましょう」ということを
英語で言ったものとしか認識していないようだ。
リファクタリングというのは、安全に変形できるという
手法を使って、いっぽずつ書き換えていくもの。
手法を使わない書き換えはリファクタリングじゃない。
リファクタリングを「ソースコードを綺麗にしましょう」ということを
英語で言ったものとしか認識していないようだ。
リファクタリングというのは、安全に変形できるという
手法を使って、いっぽずつ書き換えていくもの。
手法を使わない書き換えはリファクタリングじゃない。
457デフォルトの名無しさん
2014/09/15(月) 10:57:57.36ID:z+pQ6G77458デフォルトの名無しさん
2014/09/15(月) 11:09:38.77ID:pNNQiIbO これがリファクタ信者の暴走か
459デフォルトの名無しさん
2014/09/15(月) 11:28:39.31ID:kUSteVkT リファクタリングの「関数の抽出」をやったら
増えた関数呼び出し分の実行コストが無視出来なくて
仕様を満たさなくなってしまいました
増えた関数呼び出し分の実行コストが無視出来なくて
仕様を満たさなくなってしまいました
460デフォルトの名無しさん
2014/09/15(月) 11:46:22.25ID:9UWhhSIJ461デフォルトの名無しさん
2014/09/15(月) 11:49:22.77ID:kUSteVkT つまり途中で一回ぶっ壊して同じ結果が得られるように作り直すわけね
良いと思うよ
良いと思うよ
462デフォルトの名無しさん
2014/09/15(月) 12:21:05.22ID:NXR59SQz リファクタリングがゲシュタルト崩壊しそうなスレだ。
463デフォルトの名無しさん
2014/09/15(月) 12:43:17.41ID:zrs0o34A 安全を過信しすぎだな
464デフォルトの名無しさん
2014/09/15(月) 12:46:23.34ID:9UWhhSIJ >>461
一回ぶっ壊したらだめだろw
それではリファクタリングになっていない。
リファクタリングは壊さずに直すことであり
壊さないで直すための手法がまとめられている。
http://d.hatena.ne.jp/asakichy/20100607/1275877997
一回ぶっ壊したらだめだろw
それではリファクタリングになっていない。
リファクタリングは壊さずに直すことであり
壊さないで直すための手法がまとめられている。
http://d.hatena.ne.jp/asakichy/20100607/1275877997
465デフォルトの名無しさん
2014/09/15(月) 13:45:51.89ID:kUSteVkT466デフォルトの名無しさん
2014/09/15(月) 15:20:24.10ID:4lL49qVx 慌てずリファクタリングの公式に沿って変更すれば副作用は一切ない。
467デフォルトの名無しさん
2014/09/15(月) 15:20:49.07ID:9UWhhSIJ >>465
> 少なくとも「関数の抽出」はリファクタリングの操作としてアトミックじゃない
アトミックだけど?
リファクタリング本を見ればしっかり書いてあるよ。
アトミックに作業する方法。
どうせあんたは関数を消して書きなおす(書き直してる間
元の関数がなくなってる状態)が起きるって思ってるんだろうけど。
ほんと、やり方をしらんのね。しらんから壊れるって言ってる。
わかりやすい。
> 少なくとも「関数の抽出」はリファクタリングの操作としてアトミックじゃない
アトミックだけど?
リファクタリング本を見ればしっかり書いてあるよ。
アトミックに作業する方法。
どうせあんたは関数を消して書きなおす(書き直してる間
元の関数がなくなってる状態)が起きるって思ってるんだろうけど。
ほんと、やり方をしらんのね。しらんから壊れるって言ってる。
わかりやすい。
468デフォルトの名無しさん
2014/09/15(月) 15:21:50.80ID:9UWhhSIJ ちなみに、リファクタリングブラウザを使えばもっと簡単に行える。
もちろん、リファクタリング本にはそういうツールを使わないやり方も書いてある。
もちろん、リファクタリング本にはそういうツールを使わないやり方も書いてある。
469デフォルトの名無しさん
2014/09/15(月) 15:45:17.66ID:wmpEGwKw470デフォルトの名無しさん
2014/09/15(月) 15:51:22.11ID:wmpEGwKw471デフォルトの名無しさん
2014/09/15(月) 15:53:23.99ID:KlWrYY91 まあ俺ぐらいリファクタリングに精通すると、最初からリファクタリング後の最終形になるように最初からコーディングできちゃうわけで、あえてリファクタリングを意識しなくていいわけなんだけどね。
中島敦の「名人伝」にでてくる「弓ってなに?」といった弓の名手のごとし。
中島敦の「名人伝」にでてくる「弓ってなに?」といった弓の名手のごとし。
472デフォルトの名無しさん
2014/09/15(月) 15:55:47.97ID:9UWhhSIJ473デフォルトの名無しさん
2014/09/15(月) 15:57:45.71ID:9UWhhSIJ >>470
> 手で書き直したとかじゃなくて、メソッドの抽出することで
> 仕様を満たさなくなるケースもあるって話だろう
メソッドの抽出で仕様を満たさなくなることはありません。
> その直後にインライン化したとしても、一旦仕様を満たさない状態になったのは事実
あんたの言ってる「仕様」って関数呼び出し○ナノ秒以内で
あることっていう要件の話だよね?w
それは仕様ではない。
> 手で書き直したとかじゃなくて、メソッドの抽出することで
> 仕様を満たさなくなるケースもあるって話だろう
メソッドの抽出で仕様を満たさなくなることはありません。
> その直後にインライン化したとしても、一旦仕様を満たさない状態になったのは事実
あんたの言ってる「仕様」って関数呼び出し○ナノ秒以内で
あることっていう要件の話だよね?w
それは仕様ではない。
474デフォルトの名無しさん
2014/09/15(月) 16:00:52.19ID:9UWhhSIJ >>471
それは過剰な設計になってるよ。
コードの規模に応じて、適切な設計というのは異なる。
コードに修正が入る、それがバグの修正でない限り
機能化拡張だろう。
機能拡張にともなって規模が増るというような時にリファクタリングをするんだ。
機能追加とリファクタリングはわけてやるものだから、
機能追加前、もしくは機能追加後にリファクタリングね。
最初から過剰な拡張性をもたせるのはよくない。
それは過剰な設計になってるよ。
コードの規模に応じて、適切な設計というのは異なる。
コードに修正が入る、それがバグの修正でない限り
機能化拡張だろう。
機能拡張にともなって規模が増るというような時にリファクタリングをするんだ。
機能追加とリファクタリングはわけてやるものだから、
機能追加前、もしくは機能追加後にリファクタリングね。
最初から過剰な拡張性をもたせるのはよくない。
475デフォルトの名無しさん
2014/09/15(月) 16:31:02.56ID:9UWhhSIJ476デフォルトの名無しさん
2014/09/15(月) 16:59:56.60ID:WaQuX0Y8 ポリモーフィズム化するのは機能追加だアホ
477デフォルトの名無しさん
2014/09/15(月) 17:07:57.72ID:kUSteVkT >>473
> あんたの言ってる「仕様」って関数呼び出し○ナノ秒以内で
> あることっていう要件の話だよね?w
> それは仕様ではない。
ループの中で繰り返し呼び出されたら馬鹿にならん差になることもある
仕様かどうかはケースバイケースだアホ
> あんたの言ってる「仕様」って関数呼び出し○ナノ秒以内で
> あることっていう要件の話だよね?w
> それは仕様ではない。
ループの中で繰り返し呼び出されたら馬鹿にならん差になることもある
仕様かどうかはケースバイケースだアホ
478デフォルトの名無しさん
2014/09/15(月) 17:15:35.47ID:kUSteVkT リファクタリングの「関数のインライン化」をやったら
生成されるプログラムのバイナリサイズが許容範囲を超えて
仕様を満たさなくなってしまいました
生成されるプログラムのバイナリサイズが許容範囲を超えて
仕様を満たさなくなってしまいました
479デフォルトの名無しさん
2014/09/15(月) 17:17:53.19ID:9UWhhSIJ ID:kUSteVkT必死すぎだなw
”要件” を満たせないなら、
同じ仕様のまま 要件を満たすように
リファクタリングすればいいだろうw
”要件” を満たせないなら、
同じ仕様のまま 要件を満たすように
リファクタリングすればいいだろうw
480デフォルトの名無しさん
2014/09/15(月) 17:32:28.60ID:9UWhhSIJ ID:kUSteVkTアは書いたコードが要件を満たせなかったら
そのコードを捨てて一から作り直んだろうかw
そのコードを捨てて一から作り直んだろうかw
481デフォルトの名無しさん
2014/09/15(月) 17:33:12.92ID:kUSteVkT 一日中スレに張り付いてる ID:9UWhhSIJ に必死過ぎと言われてもな…
で、リファクタリングの手法に則って変換しても
要件を満たせないケースがあると認めるのか?
で、リファクタリングの手法に則って変換しても
要件を満たせないケースがあると認めるのか?
482デフォルトの名無しさん
2014/09/15(月) 17:38:23.74ID:9UWhhSIJ やっと要件といったねw
リファクタリングは仕様を変えずに
コードをわかりやすい形に修正するものだから
要件を満たさなく慣れば、満たすように
リファクタリングすればいいってことで終わる話だ。
なんせリファクタリングしても仕様は変わらないのだから
仕様を変えずに要件を満たせるように作り変えられる。
リファクタリングは仕様を変えずに
コードをわかりやすい形に修正するものだから
要件を満たさなく慣れば、満たすように
リファクタリングすればいいってことで終わる話だ。
なんせリファクタリングしても仕様は変わらないのだから
仕様を変えずに要件を満たせるように作り変えられる。
483デフォルトの名無しさん
2014/09/15(月) 17:44:05.42ID:kUSteVkT484デフォルトの名無しさん
2014/09/15(月) 18:58:56.46ID:j8xvklWY 絶対に壊れない奥義は秘中の秘で
師匠に皆伝を認められないと伝授してもらえないんだよ
師匠に皆伝を認められないと伝授してもらえないんだよ
485デフォルトの名無しさん
2014/09/15(月) 19:33:35.36ID:wbbrJGCJ リファクタリングってどのタイミングでやる事を想定してるのかな
プロジェクトにそんな工程存在しないし
終わって凍結したコードを後から修正なんてしないでしょ
不具合とか新機能とか更改する案件が出てきて初めて
次のプロジェクトやりましょうってなるわけでしょ
そうなったとしてコードの機能追加や修正はあっても
このスレで言う仕様通りに動くものにわざわざ手をつけるなんてことするかな
プロジェクトにそんな工程存在しないし
終わって凍結したコードを後から修正なんてしないでしょ
不具合とか新機能とか更改する案件が出てきて初めて
次のプロジェクトやりましょうってなるわけでしょ
そうなったとしてコードの機能追加や修正はあっても
このスレで言う仕様通りに動くものにわざわざ手をつけるなんてことするかな
486デフォルトの名無しさん
2014/09/15(月) 19:40:39.59ID:q3fGkS61 やりたい時がやるべき時なんだよ。
コードがクソだと思ったら何時でもそれがリファクタリングのタイミング。
コードがクソだと思ったら何時でもそれがリファクタリングのタイミング。
487デフォルトの名無しさん
2014/09/15(月) 19:58:17.80ID:wbbrJGCJ だからそんなタイミングなんて実際存在しないよねって話をしてるのに
488デフォルトの名無しさん
2014/09/15(月) 20:46:42.81ID:q3fGkS61 >>487
だからコードがクソだと思わなかったらやる必要ないんだって
だからコードがクソだと思わなかったらやる必要ないんだって
489デフォルトの名無しさん
2014/09/15(月) 21:25:15.72ID:9UWhhSIJ >>483
> いや、俺は最後に修正をコミットするときに仕様を満たしてれば
> 途中で壊れてようがリファクタリングとしてOKって立場だから、それで良いよ
リファクタリングの誤用
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?RefactoringMalapropism
> ……のだが、リファクタリングは、適切に使われてはいない。
> リファクタリング中に2,3日システムが動かなくなっちゃってーなどと言ってる奴がいたら、
> んなもんリファクタリングじゃあなーいと言ってやれ。 ドキュメントをリファクタリング
> しちゃるとか言ってる奴、 それもリファクタリングじゃねーぞコラ。 そういうのは、リストラクチャリング(再構築)というのだッ。
> リファクタリングはより具体的な技術のことで、 小さな「振る舞いを保持したままの変化」
> (リファクタリングと呼ばれている)から成り立っている。 システムをリファクタリングするときは、
> 数分以上、システムが壊れたままにしてはいけない。
> いや、俺は最後に修正をコミットするときに仕様を満たしてれば
> 途中で壊れてようがリファクタリングとしてOKって立場だから、それで良いよ
リファクタリングの誤用
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?RefactoringMalapropism
> ……のだが、リファクタリングは、適切に使われてはいない。
> リファクタリング中に2,3日システムが動かなくなっちゃってーなどと言ってる奴がいたら、
> んなもんリファクタリングじゃあなーいと言ってやれ。 ドキュメントをリファクタリング
> しちゃるとか言ってる奴、 それもリファクタリングじゃねーぞコラ。 そういうのは、リストラクチャリング(再構築)というのだッ。
> リファクタリングはより具体的な技術のことで、 小さな「振る舞いを保持したままの変化」
> (リファクタリングと呼ばれている)から成り立っている。 システムをリファクタリングするときは、
> 数分以上、システムが壊れたままにしてはいけない。
490デフォルトの名無しさん
2014/09/15(月) 21:31:41.31ID:eEkAvSkz491デフォルトの名無しさん
2014/09/15(月) 21:36:40.31ID:9UWhhSIJ492デフォルトの名無しさん
2014/09/15(月) 22:30:57.87ID:kUSteVkT493デフォルトの名無しさん
2014/09/15(月) 22:47:48.33ID:W2xZfE+V IDEのリファクタリングのメニューから選べる機械的にできる変換のみを
リファクタリングとする派閥があるんだよ
要件を満たすかではなく、機械的にできる事が重要なわけ
なお、これは底辺の馬鹿でも可能な「ドカタ・スタイル」として認知されてる
リファクタリングとする派閥があるんだよ
要件を満たすかではなく、機械的にできる事が重要なわけ
なお、これは底辺の馬鹿でも可能な「ドカタ・スタイル」として認知されてる
494デフォルトの名無しさん
2014/09/15(月) 23:33:30.39ID:jSabMZv+495デフォルトの名無しさん
2014/09/16(火) 02:50:25.03ID:BRRsQsEe >>446
>オブジェクト指向、CMMI、PMBOKとかと同じでさ、アメリカ人の教授とかはそういうのまとめて
>自分が言い出しっぺになって、学会ごっこしたり、資格試験の元締めやろうとしたりするのが好きなんだよ。
リファクタリングって、資格試験制度や学会作ろうって動きがあるのかな?
パターンはなんかやってるところあるよね。
>オブジェクト指向、CMMI、PMBOKとかと同じでさ、アメリカ人の教授とかはそういうのまとめて
>自分が言い出しっぺになって、学会ごっこしたり、資格試験の元締めやろうとしたりするのが好きなんだよ。
リファクタリングって、資格試験制度や学会作ろうって動きがあるのかな?
パターンはなんかやってるところあるよね。
496デフォルトの名無しさん
2014/09/16(火) 04:23:48.75ID:1lKEIB+1 >>493
> IDEのリファクタリングのメニューから選べる機械的にできる変換のみを
> リファクタリングとする派閥があるんだよ
それは、リファクタリングをわかってない派閥であり、
無知なリファクタリング反対派となんらかわらないよ。
リファクタリング本を読んでいれば、
リファクタリングブラウザで行えるのは
リファクタリングのほんの一部だって知ってる。
> IDEのリファクタリングのメニューから選べる機械的にできる変換のみを
> リファクタリングとする派閥があるんだよ
それは、リファクタリングをわかってない派閥であり、
無知なリファクタリング反対派となんらかわらないよ。
リファクタリング本を読んでいれば、
リファクタリングブラウザで行えるのは
リファクタリングのほんの一部だって知ってる。
497デフォルトの名無しさん
2014/09/16(火) 12:38:21.05ID:5ipzkeYr リファクタラー内部抗争勃発
498デフォルトの名無しさん
2014/09/16(火) 13:41:58.56ID:UosJEOFn リファクタリング前と後で同じテストが通ればOK派と、
リファクタリング中のどの時点でもテストが通らないとダメ派か。
リファクタリング中のどの時点でもテストが通らないとダメ派か。
499デフォルトの名無しさん
2014/09/16(火) 19:13:39.64ID:BRRsQsEe リファクタリングのアトミックな単位は一文字削除
500デフォルトの名無しさん
2014/09/16(火) 20:19:15.75ID:c0zqQ2NF >>1
リファクタリング自体が理想論。
つまりは、自分(以下A)と同等かそれ以上の腕の持ち主だけで人材が構成されている必要がある。ただし、これは自分視点。
しかし、この状態だと、A以上の腕の持ち主からAを見ると、Aは足手まといで汚いソースを作り上げる元凶。
上級者が、切磋琢磨していく状態なら良いが、上級者なんて1%もいない。99%の下手が次々と入ってきてクズソースを乱発。
腕の良い者達は、クズソースのリファクタ作業だけをやるハメに。
腕の良い者達だけでやっていれば、もっと早く開発ができるのに。しかしリファクタリングというとできるのは腕の良いものだけ。
よってクズの尻拭いを永久にやらされる上級者は、腐る。
そしておしまい。
リファクタ云々よりクズの徹底排除こそ最優先。
それがなされなければ、確実にクズソースの生成のほうが圧倒的に早い。
リファクタリング自体が理想論。
つまりは、自分(以下A)と同等かそれ以上の腕の持ち主だけで人材が構成されている必要がある。ただし、これは自分視点。
しかし、この状態だと、A以上の腕の持ち主からAを見ると、Aは足手まといで汚いソースを作り上げる元凶。
上級者が、切磋琢磨していく状態なら良いが、上級者なんて1%もいない。99%の下手が次々と入ってきてクズソースを乱発。
腕の良い者達は、クズソースのリファクタ作業だけをやるハメに。
腕の良い者達だけでやっていれば、もっと早く開発ができるのに。しかしリファクタリングというとできるのは腕の良いものだけ。
よってクズの尻拭いを永久にやらされる上級者は、腐る。
そしておしまい。
リファクタ云々よりクズの徹底排除こそ最優先。
それがなされなければ、確実にクズソースの生成のほうが圧倒的に早い。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- 【J SPORTS】FIFA U-17ワールドカップ ★9
- 【J SPORTS】FIFA U-17ワールドカップ ★10
- とらせん IPあり
- 巨専】
- こいせん 全レス転載禁止
- 侍ジャパンシリーズ2025「日本vs韓国」その12
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
- かしこいワンコっていうVtuberの子知ってる?
- カレーライスぐちゃぐちゃに混ぜる奴🤣
- 米シンクタンク「アメリカは台湾問題で"あいまい戦略"を取っている。高市早苗はこの方針から逸脱している」 [603416639]
- 【高市早苗】バス会社、中国からのキャンセルで12月で2000万円~3000万円の損失へ [115996789]
- ラーメンはかたや堅粕店に来た
