- 1 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 17:25:56 .net]
- テストも書かないでリファクタリングとかうけるw
まずな、リファクタリングでは機能追加・修正は行わない。 動作はまったく同じでコードをきれいに書き換えること。 書き換えるといっても、これなら同じ動きだろ?って推測でやってはいけない。 まずテストを書く。ユニットテストをできるように、 単一のクラスでインスタンスを作る。 汚いコードなのだからたいていは依存関係のせいで単一ではクラスが生成できない それを生成するために、クラスの動作を書き換える。 といっても元のコードは修正しない。継承やプリプロセッサを使って 依存関係を断ち切るために既存のコードを上書きする。 どうしてもそれが不可能な場合には、決められた手順で最小のコード修正を行う そうやって既存のクラスのユニットテストを行う。 それでやっとリファクタリングが行える。 既存のクラスのユニットテストを通るように新たなコードに修正、 もしくは新規作成して置き換える。 この手順と考え方を守ってないのはリファクタリングではない。 で?
- 477 名前:デフォルトの名無しさん mailto:sage [2014/09/15(月) 17:15:35.47 ID:kUSteVkT.net]
- リファクタリングの「関数のインライン化」をやったら
生成されるプログラムのバイナリサイズが許容範囲を超えて 仕様を満たさなくなってしまいました
- 478 名前:デフォルトの名無しさん mailto:sage [2014/09/15(月) 17:17:53.19 ID:9UWhhSIJ.net]
- ID:kUSteVkT必死すぎだなw
”要件” を満たせないなら、 同じ仕様のまま 要件を満たすように リファクタリングすればいいだろうw
- 479 名前:デフォルトの名無しさん mailto:sage [2014/09/15(月) 17:32:28.60 ID:9UWhhSIJ.net]
- ID:kUSteVkTアは書いたコードが要件を満たせなかったら
そのコードを捨てて一から作り直んだろうかw
- 480 名前:デフォルトの名無しさん mailto:sage [2014/09/15(月) 17:33:12.92 ID:kUSteVkT.net]
- 一日中スレに張り付いてる ID:9UWhhSIJ に必死過ぎと言われてもな…
で、リファクタリングの手法に則って変換しても 要件を満たせないケースがあると認めるのか?
- 481 名前:デフォルトの名無しさん mailto:sage [2014/09/15(月) 17:38:23.74 ID:9UWhhSIJ.net]
- やっと要件といったねw
リファクタリングは仕様を変えずに コードをわかりやすい形に修正するものだから 要件を満たさなく慣れば、満たすように リファクタリングすればいいってことで終わる話だ。 なんせリファクタリングしても仕様は変わらないのだから 仕様を変えずに要件を満たせるように作り変えられる。
- 482 名前:デフォルトの名無しさん mailto:sage [2014/09/15(月) 17:44:05.42 ID:kUSteVkT.net]
- >>481
いや、俺は最後に修正をコミットするときに仕様を満たしてれば 途中で壊れてようがリファクタリングとしてOKって立場だから、それで良いよ でも、お前はリファクタリングの手法に則ってれば 絶対に壊れることは無いっていう立場だろ?(>>453-455)
- 483 名前:デフォルトの名無しさん mailto:sage [2014/09/15(月) 18:58:56.46 ID:j8xvklWY.net]
- 絶対に壊れない奥義は秘中の秘で
師匠に皆伝を認められないと伝授してもらえないんだよ
- 484 名前:デフォルトの名無しさん mailto:sage [2014/09/15(月) 19:33:35.36 ID:wbbrJGCJ.net]
- リファクタリングってどのタイミングでやる事を想定してるのかな
プロジェクトにそんな工程存在しないし 終わって凍結したコードを後から修正なんてしないでしょ 不具合とか新機能とか更改する案件が出てきて初めて 次のプロジェクトやりましょうってなるわけでしょ そうなったとしてコードの機能追加や修正はあっても このスレで言う仕様通りに動くものにわざわざ手をつけるなんてことするかな
- 485 名前:デフォルトの名無しさん mailto:sage [2014/09/15(月) 19:40:39.59 ID:q3fGkS61.net]
- やりたい時がやるべき時なんだよ。
コードがクソだと思ったら何時でもそれがリファクタリングのタイミング。
- 486 名前:デフォルトの名無しさん mailto:sage [2014/09/15(月) 19:58:17.80 ID:wbbrJGCJ.net]
- だからそんなタイミングなんて実際存在しないよねって話をしてるのに
- 487 名前:デフォルトの名無しさん mailto:sage [2014/09/15(月) 20:46:42.81 ID:q3fGkS61.net]
- >>486
だからコードがクソだと思わなかったらやる必要ないんだって
- 488 名前:デフォルトの名無しさん mailto:sage [2014/09/15(月) 21:25:15.72 ID:9UWhhSIJ.net]
- >>482
> いや、俺は最後に修正をコミットするときに仕様を満たしてれば > 途中で壊れてようがリファクタリングとしてOKって立場だから、それで良いよ リファクタリングの誤用 capsctrl.que.jp/kdmsnr/wiki/bliki/?RefactoringMalapropism > ……のだが、リファクタリングは、適切に使われてはいない。 > リファクタリング中に2,3日システムが動かなくなっちゃってーなどと言ってる奴がいたら、 > んなもんリファクタリングじゃあなーいと言ってやれ。 ドキュメントをリファクタリング > しちゃるとか言ってる奴、 それもリファクタリングじゃねーぞコラ。 そういうのは、リストラクチャリング(再構築)というのだッ。 > リファクタリングはより具体的な技術のことで、 小さな「振る舞いを保持したままの変化」 > (リファクタリングと呼ばれている)から成り立っている。 システムをリファクタリングするときは、 > 数分以上、システムが壊れたままにしてはいけない。
- 489 名前:デフォルトの名無しさん mailto:sage [2014/09/15(月) 21:31:41.31 ID:eEkAvSkz.net]
- >>485
>やりたい時がやるべき時なんだよ。 趣味だよなこういうのは 死ぬまでいじってろ
- 490 名前:デフォルトの名無しさん mailto:sage [2014/09/15(月) 21:36:40.31 ID:9UWhhSIJ.net]
- >>489
趣味とは、汚くても動けばいい。と 客の前で言えないことを、こっそりやること。
- 491 名前:デフォルトの名無しさん mailto:sage [2014/09/15(月) 22:30:57.87 ID:kUSteVkT.net]
- >>488
コミットするまでシステムはそのままなんだから(正確にはデプロイするまでだが) 完全にリファクタリングの定義に沿ってるよね 誤用してるのはお前だね
- 492 名前:デフォルトの名無しさん mailto:sage [2014/09/15(月) 22:47:48.33 ID:W2xZfE+V.net]
- IDEのリファクタリングのメニューから選べる機械的にできる変換のみを
リファクタリングとする派閥があるんだよ 要件を満たすかではなく、機械的にできる事が重要なわけ なお、これは底辺の馬鹿でも可能な「ドカタ・スタイル」として認知されてる
- 493 名前:デフォルトの名無しさん mailto:sage [2014/09/15(月) 23:33:30.39 ID:jSabMZv+.net]
- >>491
これはひどい バカというより迷惑
- 494 名前:デフォルトの名無しさん [2014/09/16(火) 02:50:25.03 ID:BRRsQsEe.net]
- >>445
>オブジェクト指向、CMMI、PMBOKとかと同じでさ、アメリカ人の教授とかはそういうのまとめて >自分が言い出しっぺになって、学会ごっこしたり、資格試験の元締めやろうとしたりするのが好きなんだよ。 リファクタリングって、資格試験制度や学会作ろうって動きがあるのかな? パターンはなんかやってるところあるよね。
- 495 名前:デフォルトの名無しさん mailto:sage [2014/09/16(火) 04:23:48.75 ID:1lKEIB+1.net]
- >>492
> IDEのリファクタリングのメニューから選べる機械的にできる変換のみを > リファクタリングとする派閥があるんだよ それは、リファクタリングをわかってない派閥であり、 無知なリファクタリング反対派となんらかわらないよ。 リファクタリング本を読んでいれば、 リファクタリングブラウザで行えるのは リファクタリングのほんの一部だって知ってる。
- 496 名前:デフォルトの名無しさん mailto:sage [2014/09/16(火) 12:38:21.05 ID:5ipzkeYr.net]
- リファクタラー内部抗争勃発
- 497 名前:デフォルトの名無しさん mailto:sage [2014/09/16(火) 13:41:58.56 ID:UosJEOFn.net]
- リファクタリング前と後で同じテストが通ればOK派と、
リファクタリング中のどの時点でもテストが通らないとダメ派か。
- 498 名前:デフォルトの名無しさん [2014/09/16(火) 19:13:39.64 ID:BRRsQsEe.net]
- リファクタリングのアトミックな単位は一文字削除
- 499 名前:デフォルトの名無しさん mailto:sage [2014/09/16(火) 20:19:15.75 ID:c0zqQ2NF.net]
- >>1
リファクタリング自体が理想論。 つまりは、自分(以下A)と同等かそれ以上の腕の持ち主だけで人材が構成されている必要がある。ただし、これは自分視点。 しかし、この状態だと、A以上の腕の持ち主からAを見ると、Aは足手まといで汚いソースを作り上げる元凶。 上級者が、切磋琢磨していく状態なら良いが、上級者なんて1%もいない。99%の下手が次々と入ってきてクズソースを乱発。 腕の良い者達は、クズソースのリファクタ作業だけをやるハメに。 腕の良い者達だけでやっていれば、もっと早く開発ができるのに。しかしリファクタリングというとできるのは腕の良いものだけ。 よってクズの尻拭いを永久にやらされる上級者は、腐る。 そしておしまい。 リファクタ云々よりクズの徹底排除こそ最優先。 それがなされなければ、確実にクズソースの生成のほうが圧倒的に早い。
- 500 名前:デフォルトの名無しさん mailto:sage [2014/09/16(火) 20:29:13.06 ID:c0zqQ2NF.net]
- 3行で言うと
1%の有能な人間のリファクタリングの速度より 99%を占めるクズが作り出すクズソース量産スピードのほうが速い だから、間に合わない。 ということだね。
- 501 名前:デフォルトの名無しさん mailto:sage [2014/09/16(火) 21:19:30.50 ID:LXIAs8Mg.net]
- 隠された4行目は
そして、1%の有能な人間はここにはいない。 か?
- 502 名前:デフォルトの名無しさん mailto:sage [2014/09/16(火) 21:22:31.12 ID:1lKEIB+1.net]
- >>499
何が理想論なのかと思えば、 あんたの会社では無理って話なんだね。
- 503 名前:デフォルトの名無しさん mailto:sage [2014/09/17(水) 00:27:57.13 ID:5OnPRq9A.net]
- また俺の会社すげえ自慢か
ITドカタのクセに生意気だ
- 504 名前:デフォルトの名無しさん [2014/09/17(水) 01:33:42.78 ID:ZHv/uS3X.net]
- なんで力量がはっきりしてない人のソースレビューもせずに、
終わってからリファクタリングしてるの。クズじゃないの。 自分のコード書くだけが仕事じゃねーんだぞ。
- 505 名前:デフォルトの名無しさん mailto:sage [2014/09/17(水) 01:41:26.78 ID:bT3aRSk/.net]
- リファクタリングが工程になのであればら、彼の知っている開発手法はそもそもTDDに向いてないので、その前提でTDDの話なんてできないと思うのです
世の中にはCIって概念があるのを知らないのだろうか まぁ土方なら仕方ないと思いますが
- 506 名前:デフォルトの名無しさん mailto:sage [2014/09/17(水) 01:43:13.03 ID:bT3aRSk/.net]
- TDDすれと間違えたし、誤字りまくった
てへぺろ
- 507 名前:デフォルトの名無しさん mailto:sage [2014/09/17(水) 02:10:48.96 ID:B5vXdL5P.net]
- リバースエンジニアリングが難しいのと同じで、
自分でソースを書くよりも、 他人が書いたソースを読むのは、ずっと難しい 仕様書→ソースは、簡単 ソース→仕様書は、難しい
- 508 名前:デフォルトの名無しさん mailto:sage [2014/09/17(水) 04:16:14.76 ID:YtdMSBzp.net]
- >>503
> また俺の会社すげえ自慢か 俺の会社だせえ自慢じゃね?w
- 509 名前:デフォルトの名無しさん mailto:sage [2014/09/17(水) 04:18:50.43 ID:YtdMSBzp.net]
- >>507
> 他人が書いたソースを読むのは、ずっと難しい 最近これ違うと思うようになってきた。 他人が書いたソースが読みにくいと思ったら そのソースは他人が読むように書かれていない 自分よがりなソースコードなんだよ。 読む方に非があるんじゃなくて、書くほうが悪い
- 510 名前:デフォルトの名無しさん mailto:sage [2014/09/17(水) 07:16:49.41 ID:5OnPRq9A.net]
- 自分よがりなんて書いてる奴は、他人に読みやすい文章になるような注意力に欠けた
独りよがりの文章しか書けないんだろうな。
- 511 名前:デフォルトの名無しさん [2014/09/17(水) 12:15:48.80 ID:Kfgv1MV9.net]
- >>510
うわあ読解力パネェ
- 512 名前:デフォルトの名無しさん mailto:sage [2014/09/17(水) 21:24:55.43 ID:YtdMSBzp.net]
- >>510
> 独りよがりの文章しか書けないんだろうな。 独りよがりって、自分よがりと同じ意味じゃね?
- 513 名前:デフォルトの名無しさん mailto:sage [2014/09/17(水) 23:24:58.57 ID:IUDVFBKE.net]
- 君達は本当に頭が悪いんだな
- 514 名前:デフォルトの名無しさん mailto:sage [2014/09/18(木) 00:20:18.22 ID:spGOayPR.net]
- うむ
www.weblio.jp/content/%E8%87%AA%E5%88%86%E3%82%88%E3%81%8C%E3%82%8A 自分よがり 読み方:じぶんよがり 別表記:自分善がり ひとりよがり(独り善がり)に同じ。周囲を顧慮せずに自分の都合や損得のみで物事を考えること。
- 515 名前:デフォルトの名無しさん mailto:sage [2014/09/18(木) 19:33:06.94 ID:ot8C9XJ5.net]
- >>499
まぁほぼ同意だな
- 516 名前:デフォルトの名無しさん mailto:sage [2014/09/18(木) 20:26:58.62 ID:spGOayPR.net]
- >>515
自作自演しなくていいよ。 そんなコメント普通しないからw
- 517 名前:デフォルトの名無しさん mailto:sage [2014/09/18(木) 22:19:08.95 ID:+GRlEEjB.net]
- 要求仕様の変更に追随するために設計を変えていくのがリファクタだ
撒き散らしたクソコード直すのはリファクタとは言わん テストの前に個々人レベルでやる仕事だ
- 518 名前:デフォルトの名無しさん mailto:sage [2014/09/18(木) 22:31:11.52 ID:Lc9LBSGA.net]
- 他人が作ったものをメンテする時は
まず他人にやらせろってこと?
- 519 名前:デフォルトの名無しさん mailto:sage [2014/09/18(木) 23:29:47.48 ID:i6De8Pgm.net]
- クソコード直すのがリファクタリングでいいと思うお
- 520 名前:デフォルトの名無しさん mailto:sage [2014/09/18(木) 23:52:12.25 ID:CfthWkvp.net]
- 結局言葉遊びの域を出なかったね
- 521 名前:デフォルトの名無しさん mailto:sage [2014/09/18(木) 23:53:02.19 ID:LNiMu1bm.net]
- つーかリファクタリングとか言いにくいから修正でいいじゃん
- 522 名前:デフォルトの名無しさん mailto:sage [2014/09/19(金) 00:33:41.85 ID:Y0Ellmpg.net]
- リファクタリングを定義しようぜ
とりあえずQA形式にして質問と回答は最近の書き込みから適当に埋めた <<リファクタリングとは>> Q 何時やるの? A やりたい時。糞コードを見つけたら。今でしょ Q 具体的には(工程では)いつ? A 回答なし Q やる必要あるの? A 回答なし Q 誰がやるの?A 自称上級者 Q 上級者の定義は?A 回答なし Q その上級者には何かメリットが?A 回答なし Q リファクタリングってお金もらえるの?A ボランティア Q どういう効果が期待できるの? A 将来的なリスクを回避する、または逆にリスクを抱える
- 523 名前:デフォルトの名無しさん mailto:sage [2014/09/19(金) 17:39:57.70 ID:J2pxYtIB.net]
- >>499に対して>>502の返しするということは、>>499の話が論が正しいことを>>502が認めているということ。
つまるところ、会社の構成員の実力によって不可能になるということ。 をあんたの会社では〜。の一文で認めている。 ゆえにその切り返しをするなら、リファクタリングは議論する価値がないということ
- 524 名前:デフォルトの名無しさん mailto:sage [2014/09/19(金) 17:51:51.67 ID:VKWv7B4z.net]
- ちょっと何言ってるのかわかりませんわ
- 525 名前:デフォルトの名無しさん mailto:sage [2014/09/19(金) 18:08:18.14 ID:J2pxYtIB.net]
- 誰でもできることでないなら、実現は夢物語ということだ
- 526 名前:デフォルトの名無しさん mailto:sage [2014/09/19(金) 18:36:04.63 ID:iHgvKusj.net]
- 工程を確保して
下がやりたいと言ったら邪魔するなというだけの話かもしれない
- 527 名前:デフォルトの名無しさん mailto:sage [2014/09/19(金) 18:47:45.84 ID:5Sq7tp9D.net]
- >>523
行き詰まるところ先人達が考えて考えた結果 新言語の開発 にしか答えがないんだよなww どんな素人でも言語のルールには逆らえない。つまり従わざるを得ない。 理論だけで劇的な変化があったのなんて GOTOレス だけだろ。 わかりやすくステップ数で言うけどjavaで10ステップで組まれていてごちゃごちゃなプログラムがある。 仕様変更するのに1万ステップの変更が必要。これを、新言語おまんこ女学院言語で開発すると、 main() おまんちょ() って書くだけで同じ機能が実現され、 仕様変更には use ここか?ここがええんか? main おまんちょ(伝説の第49手目(3箇所、同時、左手だけちょうどいい微速)) って直せば実現できる言語が生まれれば、これ以上の可読性の向上はないわけで。 馬鹿でも簡単に、馬鹿でも可読性が高く、馬鹿でもスピーディーに・・・・を求めて新言語というのは生まれている
- 528 名前:デフォルトの名無しさん mailto:sage [2014/09/19(金) 18:48:57.11 ID:5Sq7tp9D.net]
- >javaで10ステップ
を >javaで10万ステップ に訂正
- 529 名前:デフォルトの名無しさん mailto:sage [2014/09/19(金) 19:42:02.22 ID:97jwqaFX.net]
- >>484
パッケージ製品のメジャーバージョンアップとか? 一般的なIT土方の工事現場にはまず縁ないわな
- 530 名前:デフォルトの名無しさん mailto:sage [2014/09/19(金) 20:44:14.36 ID:/lOvQPWO.net]
- リファクタリングしない人は
修正する時、テストしないの? テストするならリファクタリングしても 問題ないよね。
- 531 名前:デフォルトの名無しさん mailto:sage [2014/09/19(金) 20:59:36.15 ID:6gllmAz9.net]
- 全部埋めてやったぞ
<<リファクタリングとは>> Q 何時やるの? A やりたい時。糞コードを見つけたら。今でしょ Q 具体的には(工程では)いつ? A アジャイルですから。工程て何? Q やる必要あるの? A やらなきゃバグでるよ?いつか破綻するよ? Q 誰がやるの?A 自称上級者 Q 上級者の定義は?A 糞コードを発見する嗅覚を持つこと Q その上級者には何かメリットが?A コードが綺麗な方が気持ちいいだろ Q リファクタリングってお金もらえるの?A ボランティア Q どういう効果が期待できるの? A 将来的なリスクを回避する、または逆にリスクを抱える
- 532 名前:デフォルトの名無しさん mailto:sage [2014/09/19(金) 21:28:04.06 ID:/lOvQPWO.net]
- <<リファクタリングとは>>
Q 何時やるの? A テスト駆動開発においては、テスト記述→コードを書く→リファクタリング の順番で開発する Q 具体的には(工程では)いつ? A コードを書いた直後。工程で言えば開発工程 Q やる必要あるの? A 義務だろうね。小説で言えば清書する必要あるの?ぐらいのレベル。 Q 誰がやるの?A 客観的指標(McCab等)で差があるコードを見比べて、優れている方を言えるレベルの人全員 Q 上級者の定義は?A 客観的指標(McCab等)で計測して良いとされるコードを書ける人 Q その上級者には何かメリットが?A 上級者であっても、可読性やメンテナンス性が高いコードの方が早く機能追加・修正・不具合対応ができる。 Q リファクタリングってお金もらえるの?A 開発の一部であり、清書みたいなものなので当然お金はもらえる。 Q どういう効果が期待できるの? A 期待ではなく事実としてメリットがある。メリットは二つ上に書いたとおり。
- 533 名前:デフォルトの名無しさん mailto:sage [2014/09/19(金) 21:57:34.29 ID:Xfkvubm0.net]
- 当然お金はもらえるってなんだよワロタ
- 534 名前:デフォルトの名無しさん mailto:sage [2014/09/19(金) 22:04:08.26 ID:GUgRmWP+.net]
- >>533
たとえばさ、誤字脱字、これはあっても読めれば別に問題ないんだよ。 でも見つけたら直すだろう? そうやって誤字脱字の見直し、修正が例え1時間で終わったとしても 業務である以上、それは給料に変わるんだよ。
- 535 名前:デフォルトの名無しさん mailto:sage [2014/09/19(金) 22:35:47.59 ID:6gllmAz9.net]
- 問題ないのに直すのは明らかに無駄な労力だろ
リファクタリングてそういう事なのか?
- 536 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 00:28:50.80 ID:zqGI0i/Q.net]
- そこらに地雷が埋まってても踏まなきゃ平気なんだよ
- 537 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 00:35:33.60 ID:BGuuw2+W.net]
- >>530
そもそもテストは各工程に含まれてるよね? 一度コードに手を付けたらリファクタリングだろうが何だろうがテストはやり直しだよ 工程をこなしてる間つまりリリースし終わって暇にでもならないと リファクタリングなんか入り込む余地なんて無いぞ 要するに無駄ってことじゃないの
- 538 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 01:43:02.74 ID:b8OT/FfJ.net]
- >>535
「ソースコードを読むのに時間が掛かる」は 一番重要な問題だよ。 それが開発工数の大半を占めているんだから
- 539 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 10:04:40.32 ID:zqGI0i/Q.net]
- まあ理論的に完璧なリファクタリング手法を使っても
無関係であるはずの部分でコンパイラやOSのバグを踏んだらそれまでだから 実テストにやたら工数のかかってたらその後はさわれないだろうね
- 540 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 10:58:44.27 ID:b8OT/FfJ.net]
- テストやりました。バグが見つかりました。
ソースコードが汚くて、コードの意味がわかりません。 ソースコードが汚くて、バグの原因がわかりません。 あちこちにコピペされてて、バグの修正が大変です。 バグを修正したら、別のバグが発生しました。 バグを修正しましたが、処理が複数のモジュールに 分散していたので多くの再テストが必要です。 こういうのを解決するのがリファクタリング。
- 541 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 11:27:24.57 ID:41dsRCcO.net]
- 違うね。
> テストやりました。バグが見つかりました。 > (以下略) それはデバッグや。
- 542 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 11:43:01.81 ID:b8OT/FfJ.net]
- >>541
いや、それは前置きだから。 リファクタリングが解決するのは、 デバッグまでの過程で発生する問題。 同じデバッグという目的であっても、 その目的を達成するまでの時間は違うんだよ。
- 543 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 11:48:06.25 ID:zub5QpR2.net]
- ちょっと意味が分からない
- 544 名前:デフォルトの名無しさん [2014/09/20(土) 12:22:36.52 ID:McF0jAPW.net]
- 開発段階ですでにスケジュールオーバーしてる現場だらけなのに机上の空論w
新言語開発しろw
- 545 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 13:18:35.72 ID:b8OT/FfJ.net]
- >>543
意味がわからないレベルの人っているんだよねw
- 546 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 14:46:45.86 ID:mG0BaSkX.net]
- テストってコードを書いた本人がやるべき?
- 547 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 15:02:25.23 ID:uiyrzvHx.net]
- リファクタリングすら必要ないほどの腕のいい奴を最初から揃えれば良くね?
というのと同じくらいリファクタリング理論は破綻してる
- 548 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 15:33:26.65 ID:uiyrzvHx.net]
- 他人のソースコードの解読は新規作成より時間がかかるケースが多々。
仕様がわかってるなら、そんなチェックをお願いしないといけない奴のソースレビューをするより、最初から自分でやったほうが早いし確実 つまり、リファクタリングの行き着く先は、無脳者を開発に入れなければ良いに行き着く。 少数精鋭方式。
- 549 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 15:48:28.37 ID:Jdjsg9Fk.net]
- >>547-548
一理あるが理想論 だから現実解としてリファクタリングが出てきたんじゃないのか?
- 550 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 16:04:59.48 ID:b8OT/FfJ.net]
- 仕様変更っていうのは避けられないものだし、
機能追加や新しく出来た○○に対応するとか どうしても変化は避けられないわけで その変化にたいしてコードも変化させていかないといけないんだよ。 それにさ、人っていうのは成長するのは当たり前なのだから、 一年前の自分より、もっと優れたものを書けるようになっているはず。 一年後はさらに優れたものを書けるようになるはずだが、 それは今をきちんとやっていてできること。 過去の自分の真似ばかりしていても、成長はできないよ。
- 551 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 16:20:19.19 ID:gqfYZyci.net]
- 何を意味の分からん事を
と思ったら、またお前かw
- 552 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 18:11:49.33 ID:b8OT/FfJ.net]
- >>551
言い返したいことがあるのなら なにか言い返していいんだぜ
- 553 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 20:30:21.92 ID:lV8t6mfn.net]
- >>549
でもgotoレスと違って誰も実践しないだろ? そういうことだ。 誰が好き好んで人の尻拭いをやるというのだ
- 554 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 20:40:59.03 ID:Pz5VxQ8p.net]
- リファクタリングは有能が無能の尻を拭く作業ではなく自分の尻を拭く作業だ
最初は速度など無視してとりあえず動くように作る 動いたら次に速く動くようにする 速く動いたらそれを読みやすく整える 読みやすくなったら今度は新機能を楽々追加する これで立派なリファクタリングだ
- 555 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 21:06:59.81 ID:K48fRfz5.net]
- 速く動くようにするのは一番後でいいだろ
- 556 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 21:21:43.45 ID:npmlG4Eq.net]
- >>555
ボトルネックが出来て、そこを解決すれば全体に速度が上がるようなものなら 後からでもどうにかなるが、全体的に微妙に遅い、微妙にリソース食っている、 それで全体的に遅くなってるだと後からじゃどうにもならない。
- 557 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 21:27:33.19 ID:lV8t6mfn.net]
- >>554
実際誰もやっていない それが、この理論の決定的な答え 誰もやらない=やって評価されるどころか、失敗した場合の責任を問われるだけ メリット一切無い
- 558 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 21:36:13.07 ID:lV8t6mfn.net]
- >>554
そもそも、そんなものはリファクタリングではない リファクタリングは「現時点『運用中』の動いているシステムプログラム」に勝手に手を加えること。 「まがいなりにも動いているシステムのプログラムを勝手にいじるな」 というのが世界の常識。でこの常識を変えようとした思想がリファクタリング。 ただ、結局は、誰もやらんってこと。 理由の大半は「仕様がわからん」ということ。
- 559 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 21:44:36.36 ID:6heECCBq.net]
- エクストリームプログラミングから全否定かよ。
カオスだな。
- 560 名前:デフォルトの名無しさん [2014/09/20(土) 21:54:03.46 ID:UNVZl8tG.net]
- バグを仕込んでしまう可能性があるのが致命的
あとは評価制度の問題だな 長期的に絶対メリットはあるんだがそんなん誰も見ちゃいねえし
- 561 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 22:00:15.71 ID:Pz5VxQ8p.net]
- 他人の尻を拭くハメになったとき、リファクタリングが可能である唯一の条件は、
引継ぎ時点でリファクタリングされているソースコードであること、だ そうでなかったらご愁傷様あきらめた方がいい
- 562 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 22:07:58.53 ID:fFGu/96N.net]
- >>558
> リファクタリングは「現時点『運用中』の動いているシステムプログラム」に勝手に手を加えること。 なんでウソつくの? 本当と言い返せるものなら言い返していいんだぜ?w ただし、そんなことをしたら、ソースを要求するので 準備しておくこと。
- 563 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 22:53:25.35 ID:6heECCBq.net]
- 恐怖駆動開発だな。
www.hanselman.com/blog/FearDrivenDevelopmentFDD.aspx レガシーコードでテストが無い and/or コードに対する理解が無い ↓ エンバグ、ビルドを壊すことへの恐怖
- 564 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 23:06:54.25 ID:K48fRfz5.net]
- >>556
新しいマシン買えばいいだけじゃないか 開発費とハードウェア費用どっちが高くつくと思ってるんだ
- 565 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 01:19:15.97 ID:H7xT3+nz.net]
- りファクタリングって言うのは、オブジェクト指向の言語(これが大前提)で、
開発段階にあって、試作品が第一段階で問題なく動いて、 あとは性能やコードの見直しやカイゼンだよねって段階で設計へフィードバックするプロセスですよ。 その後に顧客側のチェックと納品ですよね。 運用中のシステムに手を入れるという話では無いですよ。 カイゼンを全否定ならトヨタはどうなるんでしょうか?
- 566 名前:デフォルトの名無しさん [2014/09/21(日) 01:26:54.31 ID:UIOIQYIj.net]
- 一度客に納入してさあ、次に改修の仕事がきたときにリファクタリングしていたから工数が減っていたとしてもなんのメリットもないんだよな。むしろ工数が少なきゃ金が取れない。リファクタリングした分取ったら水増し請求だ。
機能やバグについて同等で、メンテしやすさだけ向上させる工程なんて日本の一般的な開発ではインセンティブゼロだよ。趣味ならともかくプロの仕事なら。 最初からリファクタリングの作業も込みで工数見積もりなり、費用請求しろ、ってそんな見積もり見て納得する客いるわけないじゃん。最初から手直しいらない納品物にして下さい、と言われてオチ。 出来上がってテスト済みのソースをあれこれいじるなんてお遊びが入り込む余地はない。
- 567 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 01:42:02.59 ID:H7xT3+nz.net]
- それと、テストという概念は個人がスクリプトやツール類を書く場合には絶対に生まれてこない発想で、
多人数で、複数の技能レベルの人が、仕様書をガイドに組織的に開発に関わる条件下で必然的に生じる仕事上の手続き。 個人がコード書く場合は、ソースコード全体、アルゴリズム、関数やクラスを全て把握しているので テストコードをいちいち書く必要がない。だからデバックという手順はあっても、関数やクラスのテストコードを いちいち書くという発想にはならない。コード修正も容易、エラーが発生してもその場で即対応できる個人レベルの作業としては正しい。 組織で開発する部門では他人が必要なコードを仕様化した関数やクラスの動作条件を定めているから、 それを大前提としてモジュール動作をテストする必要がある。一見して馬鹿げている行為に思えるのは、 アルゴリズムを提示せずトップダウン的に関数のIN/OUTのみで仕様を提示するためにモジュールのテストが必須になる。 チェックデータの側面についていえば情報管理上テストデータが必ず必須になる。それは本物と試験用のデータが違うということ。 テストコードは本人が書くと、世界は如何にばかげた行為に時間を費やしているのかと思うだけだが、 本来は書く側は最終コードが動作すると確認した上で、2重チェックとして仕様を作成した側がテストするためのコードなり手段を作るべきだな。 人が居ないというなら、テストコード書くのでなく、統合テスト的に動作チェックすべき。
- 568 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 01:52:41.82 ID:H7xT3+nz.net]
- リファクタリングは工数水増しの手段ではない。
保守とは違うので、日本の開発やってる業界のインセンティブなど関係がない。 リファクタリングとは関係がないな。 見積もりの段階でリファクタリングなどの話は出てこない。 手直しが要るといって費用請求している段階で、それはリファクタリングの問題ではなく 失敗したプロジェクトや案件だということだろう。それを誤魔化す為に誰かが嘘として リファクタリングと言ってるだけだろう。
- 569 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 02:21:17.93 ID:H7xT3+nz.net]
- もし>>566が客側の意見であれば、失敗したプロジェクトや案件とは縁を切って
再出発したほうが開発側も、客側も気持ち的にはしあわせになれますよ。
- 570 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 06:26:59.02 ID:4aXz2u5s.net]
- >>562
>ja.wikipedia.org/wiki/%E3%83%AA%E3%83%95%E3%82%A1%E3%82%AF%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0) >リファクタリング登場の経緯と目的[編集] >リファクタリングが登場する以前は、一度正常な動作をしたプログラムは二度と手を触れるべきではないと言われていた。 >下手に手を加えて動作が変わってしまうと、それに伴って関連する部分にも修正が加えられ、やがて修正はプロジェクト >全体に波及し対処しきれなくなるかも知れない。またソフトウェアテストを十分に行い正常な動作が確認されたとしても、 >そのプログラムをわずかでも改変すれば、バグ (欠陥) が見つかったときに改変があったプログラムを疑わなければならない。
- 571 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 06:35:53.53 ID:4aXz2u5s.net]
- >>565
>りファクタリングって言うのは、オブジェクト指向の言語(これが大前提) は?wwwwwwwwwwwwwwwwwwww オブジェクト指向とそうではない言語での違いを説明しろよ オブジェクト指向という言葉になんか宗教的妄信でもしてるのか?
- 572 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 09:08:44.80 ID:aP8Aq0OA.net]
- 必要なのはコードのリファクタリングではなく
チームメンバのリファクタリングである
- 573 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 09:29:51.06 ID:48QWsy10.net]
- 言い換えると、ソースコードをリファクタリング出来るように
チームメンバーの技術力を高めることである。
- 574 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 09:47:59.75 ID:dzDyx0VV.net]
- > チームメンバのリファクタリングである
リファクタリングて振舞いを変えてはいかんのでは?
- 575 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 12:25:58.75 ID:MCI/5nTd.net]
- 例えばバグが多く、しかも非常にメンテしにくい糞コードがあったとする
この場合 1. バグを含んだままリファクタリングして、その後バグを直す 2. 先にバグを直して正しいテストを通る様にしてから、リファクタリングに着手する どっち?
- 576 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 12:33:35.65 ID:48QWsy10.net]
- >>575
原則としては2番 ただし、今既に十分なテストがあるのなら、 リファクタリングしてもよい。 ようするに「バグが有ることに気づいていなかった」と考える。 バグが有るといえども、その状態で使われていたのであれば、 問題ない範囲(把握している範囲)で使われていたわけで、 使われていた部分の動きが変わっていなければ何も問題ない。 適切に動いていないバグの部分の動きが変わった所で 誰も困らない。そもそもバグは仕様ではないのだから。
- 577 名前:デフォルトの名無しさん [2014/09/21(日) 13:51:42.60 ID:C0Gh49Ld.net]
- >>575
2. 一択。 1. は死亡フラグ。
|

|