[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2ch.scのread.cgiへ]
Update time : 05/17 11:04 / Filesize : 199 KB / Number-of Response : 672
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

リファクタリングをただのコード修正と思ってる人へ



1 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 17:25:56 .net]
テストも書かないでリファクタリングとかうけるw

まずな、リファクタリングでは機能追加・修正は行わない。
動作はまったく同じでコードをきれいに書き換えること。

書き換えるといっても、これなら同じ動きだろ?って推測でやってはいけない。

まずテストを書く。ユニットテストをできるように、
単一のクラスでインスタンスを作る。

汚いコードなのだからたいていは依存関係のせいで単一ではクラスが生成できない
それを生成するために、クラスの動作を書き換える。
といっても元のコードは修正しない。継承やプリプロセッサを使って
依存関係を断ち切るために既存のコードを上書きする。
どうしてもそれが不可能な場合には、決められた手順で最小のコード修正を行う

そうやって既存のクラスのユニットテストを行う。
それでやっとリファクタリングが行える。
既存のクラスのユニットテストを通るように新たなコードに修正、
もしくは新規作成して置き換える。

この手順と考え方を守ってないのはリファクタリングではない。

で?

653 名前:デフォルトの名無しさん mailto:sage [2014/11/27(木) 00:55:26.29 ID:dibuY+0s.net]
再利用のコストに関しては単純に何回再利用するかで変わってくるから、
コストの高い再利用をしているお前が悪いんじゃないのとしか言えない。

リファクタリングも同じで、2度と手を入れないような部分や新規プロジェクトを
渡り歩くような人には不要なもの。 ただ昨今のアジャイル開発とか呼ばれている
ものだと、ある程度の期間は修正や追加が必要になってくる。 無計画に接ぎ木を
してわけの分からないキメラを作るより、ある程度剪定して理解できる範疇に
修める必要があるよねっていうのがリファクタリング。

654 名前:デフォルトの名無しさん mailto:sage [2014/11/27(木) 12:34:12.35 ID:jH/Xs+Kz.net]
>>653
ソフトウェアの再利用もその都度コストがかかるんだが?
普通は回数に比例してコストが増加するぞ

655 名前:デフォルトの名無しさん mailto:sage [2014/11/27(木) 12:41:38.96 ID:r+bsdp9/.net]
>>654
> ソフトウェアの再利用もその都度コストがかかるんだが?
> 普通は回数に比例してコストが増加するぞ
再利用するために何らかの変更が必要なら、そのときだけコストがかかるが、
以降はコストかからんだろ。

656 名前:デフォルトの名無しさん mailto:sage [2014/11/27(木) 23:29:56.27 ID:kUiumU8R.net]
再利用前提で作ろうとしてる時点で余計なコトスがかかっとるわい

657 名前:デフォルトの名無しさん [2014/11/28(金) 02:38:41.57 ID:LrjKc3Ws.net]
古くなった原発の再利用

658 名前:デフォルトの名無しさん mailto:sage [2014/11/28(金) 04:18:59.87 ID:MN0ISYZx.net]
再利用性や拡張性というのは、将来のことだから仕様外。
仕様外だからプログラミングの対象外。

おわり。

659 名前:デフォルトの名無しさん mailto:sage [2014/11/28(金) 07:48:17.97 ID:IEXuWLi+.net]
再利用と考えるからいけない。
モジュール化。

適切なモジュール化は、再利用出来るだけじゃなく、
複雑度も減ってバグも少なくなる。

適切なモジュール化が出来ない奴が
再利用にコストがかかるとか
コードが再利用できないとか言う。

660 名前:デフォルトの名無しさん mailto:sage [2014/11/28(金) 12:44:59.78 ID:X4M4SbHd.net]
>>659
それは再利用じゃないよ
機能を小さく保つ事で、本来の目的である一次利用出来る範囲が広がるだけだ
それを便宜的に「再利用しやすい」などと表現してる訳だ
ソフトウェア本来の目的とは異なる本当の意味での再利用にはコストがかかるんだよ

661 名前:デフォルトの名無しさん mailto:sage [2014/11/28(金) 17:41:36.95 ID:03S1h8mH.net]
本当の意味での再利用?
そんなもんに興味持つ必要はなさそうだが?

>>659
それな。
本当にそれ。



662 名前:デフォルトの名無しさん mailto:sage [2014/11/29(土) 01:59:23.82 ID:TbFyYdBX.net]
>>660
> 機能を小さく保つ事で、本来の目的である一次利用出来る範囲が広がるだけだ
一次利用が出来る範囲が広がる=再利用だろw

663 名前:デフォルトの名無しさん mailto:sage [2014/11/29(土) 13:13:20.77 ID:U5ivpV2C.net]
再利用じゃなくて流用と言えばいいのに

664 名前:デフォルトの名無しさん mailto:sage [2014/11/29(土) 14:17:24.97 ID:v2v5Wnkr.net]
全く修正しないで使うのが再利用。
コピーして修正して使うのが流用

流用をすると、AとA'というコードが生まれなんで二つに分かれてるの?
違いはなんんあの?と結局両方を読まないといけなくなる。
流用するたびに読むべきコードがどんどん増えていく。
はてに一つを修正するともう片方の修正を忘れるとか。

なので全く修正しないで使う「再利用」でないと意味が無い。
全く修正しないで使えるのだからコピーする必要はなくなる

665 名前:デフォルトの名無しさん mailto:sage [2014/11/29(土) 14:46:23.56 ID:A4nuaoXO.net]
流用元から流用先がどこにどれだけあるかは基本的に分からない。
流用元に何かバグがあって修正する必要があった場合に論理的に考えると
流用先も直しておいた方がいいor直す必要がある。 ただ流用先を全て特定
することは難しく、特に流用先で動くように変数名とか変えてあると確実に
漏れる。バグじゃなくても何か修正追加したいと思った時の事を考えると
コピペをばらまくより関数で再利用するほうがいいよねってなる。

ただ人間は欲深いもので1つの関数にあれもこれも詰め込んで破綻させる
奴が出てきたりする。こういうのを見て、関数なんて作らなくてコピペでいい
だろって奴が出てきて無限ループする。

666 名前:デフォルトの名無しさん mailto:sage [2014/11/29(土) 22:16:12.25 ID:UEas1JmU.net]
頑張って同じ機能がすでにあるか探して、
あったらあまりいいコードじゃなくても正しく仕様を満たすからそれ使って
散々気をつけてんのに誰かが変更しやがる

667 名前:デフォルトの名無しさん mailto:sage [2014/11/30(日) 12:24:33.02 ID:NxMP0P1A.net]
リファクタリングと言う名の正義

668 名前:デフォルトの名無しさん mailto:sage [2014/12/05(金) 19:01:54.53 ID:cszTTiF/.net]
>>667
同意、正義を振りかざす曲者

669 名前:デフォルトの名無しさん mailto:sage [2014/12/21(日) 11:54:37.04 ID:LOCxTeYe.net]
>>660,660
>ソフトウェア本来の目的とは異なる本当の意味での再利用にはコストがかかるんだよ
 
 アプリ内でのモジュールの共通化(=アプリに特化したフレームワーク、ライブラリ
の抽出)と、どんなプロジェクトでも使えるようにフレームワークやライブラリーを
汎用化するのは似て非なるものだと思う。

670 名前:デフォルトの名無しさん mailto:sage [2015/02/15(日) 22:12:39.01 ID:wyXhgSeE.net]
>>1-1000
テスト

671 名前:デフォルトの名無しさん mailto:sage [2016/03/27(日) 21:55:32.43 ID:N7IGtcj3.net]
どのタイミングでやったら工数に影響を与えずにできるの?








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<199KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef