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

■ このスレッドは過去ログ倉庫に格納されています
2010/05/29(土) 17:25:56
テストも書かないでリファクタリングとかうけるw

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

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

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

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

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

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

で?
2014/09/15(月) 19:40:39.59ID:q3fGkS61
やりたい時がやるべき時なんだよ。
コードがクソだと思ったら何時でもそれがリファクタリングのタイミング。
2014/09/15(月) 19:58:17.80ID:wbbrJGCJ
だからそんなタイミングなんて実際存在しないよねって話をしてるのに
2014/09/15(月) 20:46:42.81ID:q3fGkS61
>>487
だからコードがクソだと思わなかったらやる必要ないんだって
2014/09/15(月) 21:25:15.72ID:9UWhhSIJ
>>483
> いや、俺は最後に修正をコミットするときに仕様を満たしてれば
> 途中で壊れてようがリファクタリングとしてOKって立場だから、それで良いよ

リファクタリングの誤用
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?RefactoringMalapropism
> ……のだが、リファクタリングは、適切に使われてはいない。
> リファクタリング中に2,3日システムが動かなくなっちゃってーなどと言ってる奴がいたら、
> んなもんリファクタリングじゃあなーいと言ってやれ。 ドキュメントをリファクタリング
> しちゃるとか言ってる奴、 それもリファクタリングじゃねーぞコラ。 そういうのは、リストラクチャリング(再構築)というのだッ。

> リファクタリングはより具体的な技術のことで、 小さな「振る舞いを保持したままの変化」
> (リファクタリングと呼ばれている)から成り立っている。 システムをリファクタリングするときは、
> 数分以上、システムが壊れたままにしてはいけない。
2014/09/15(月) 21:31:41.31ID:eEkAvSkz
>>486
>やりたい時がやるべき時なんだよ。

趣味だよなこういうのは
死ぬまでいじってろ
2014/09/15(月) 21:36:40.31ID:9UWhhSIJ
>>490
趣味とは、汚くても動けばいい。と
客の前で言えないことを、こっそりやること。
2014/09/15(月) 22:30:57.87ID:kUSteVkT
>>489
コミットするまでシステムはそのままなんだから(正確にはデプロイするまでだが)
完全にリファクタリングの定義に沿ってるよね
誤用してるのはお前だね
2014/09/15(月) 22:47:48.33ID:W2xZfE+V
IDEのリファクタリングのメニューから選べる機械的にできる変換のみを
リファクタリングとする派閥があるんだよ
要件を満たすかではなく、機械的にできる事が重要なわけ

なお、これは底辺の馬鹿でも可能な「ドカタ・スタイル」として認知されてる
2014/09/15(月) 23:33:30.39ID:jSabMZv+
>>492
これはひどい
バカというより迷惑
495デフォルトの名無しさん
垢版 |
2014/09/16(火) 02:50:25.03ID:BRRsQsEe
>>446
>オブジェクト指向、CMMI、PMBOKとかと同じでさ、アメリカ人の教授とかはそういうのまとめて
>自分が言い出しっぺになって、学会ごっこしたり、資格試験の元締めやろうとしたりするのが好きなんだよ。

リファクタリングって、資格試験制度や学会作ろうって動きがあるのかな?
パターンはなんかやってるところあるよね。
2014/09/16(火) 04:23:48.75ID:1lKEIB+1
>>493
> IDEのリファクタリングのメニューから選べる機械的にできる変換のみを
> リファクタリングとする派閥があるんだよ

それは、リファクタリングをわかってない派閥であり、
無知なリファクタリング反対派となんらかわらないよ。

リファクタリング本を読んでいれば、
リファクタリングブラウザで行えるのは
リファクタリングのほんの一部だって知ってる。
2014/09/16(火) 12:38:21.05ID:5ipzkeYr
リファクタラー内部抗争勃発
2014/09/16(火) 13:41:58.56ID:UosJEOFn
リファクタリング前と後で同じテストが通ればOK派と、
リファクタリング中のどの時点でもテストが通らないとダメ派か。
499デフォルトの名無しさん
垢版 |
2014/09/16(火) 19:13:39.64ID:BRRsQsEe
リファクタリングのアトミックな単位は一文字削除
2014/09/16(火) 20:19:15.75ID:c0zqQ2NF
>>1
リファクタリング自体が理想論。

つまりは、自分(以下A)と同等かそれ以上の腕の持ち主だけで人材が構成されている必要がある。ただし、これは自分視点。
しかし、この状態だと、A以上の腕の持ち主からAを見ると、Aは足手まといで汚いソースを作り上げる元凶。
上級者が、切磋琢磨していく状態なら良いが、上級者なんて1%もいない。99%の下手が次々と入ってきてクズソースを乱発。
腕の良い者達は、クズソースのリファクタ作業だけをやるハメに。
腕の良い者達だけでやっていれば、もっと早く開発ができるのに。しかしリファクタリングというとできるのは腕の良いものだけ。
よってクズの尻拭いを永久にやらされる上級者は、腐る。
そしておしまい。

リファクタ云々よりクズの徹底排除こそ最優先。
それがなされなければ、確実にクズソースの生成のほうが圧倒的に早い。
2014/09/16(火) 20:29:13.06ID:c0zqQ2NF
3行で言うと

1%の有能な人間のリファクタリングの速度より
99%を占めるクズが作り出すクズソース量産スピードのほうが速い
だから、間に合わない。

ということだね。
2014/09/16(火) 21:19:30.50ID:LXIAs8Mg
隠された4行目は

そして、1%の有能な人間はここにはいない。

か?
2014/09/16(火) 21:22:31.12ID:1lKEIB+1
>>500
何が理想論なのかと思えば、
あんたの会社では無理って話なんだね。
2014/09/17(水) 00:27:57.13ID:5OnPRq9A
また俺の会社すげえ自慢か
ITドカタのクセに生意気だ
505デフォルトの名無しさん
垢版 |
2014/09/17(水) 01:33:42.78ID:ZHv/uS3X
なんで力量がはっきりしてない人のソースレビューもせずに、
終わってからリファクタリングしてるの。クズじゃないの。
自分のコード書くだけが仕事じゃねーんだぞ。
2014/09/17(水) 01:41:26.78ID:bT3aRSk/
リファクタリングが工程になのであればら、彼の知っている開発手法はそもそもTDDに向いてないので、その前提でTDDの話なんてできないと思うのです

世の中にはCIって概念があるのを知らないのだろうか

まぁ土方なら仕方ないと思いますが
2014/09/17(水) 01:43:13.03ID:bT3aRSk/
TDDすれと間違えたし、誤字りまくった
てへぺろ
2014/09/17(水) 02:10:48.96ID:B5vXdL5P
リバースエンジニアリングが難しいのと同じで、
自分でソースを書くよりも、
他人が書いたソースを読むのは、ずっと難しい

仕様書→ソースは、簡単
ソース→仕様書は、難しい
2014/09/17(水) 04:16:14.76ID:YtdMSBzp
>>504
> また俺の会社すげえ自慢か

俺の会社だせえ自慢じゃね?w
2014/09/17(水) 04:18:50.43ID:YtdMSBzp
>>508
> 他人が書いたソースを読むのは、ずっと難しい

最近これ違うと思うようになってきた。

他人が書いたソースが読みにくいと思ったら
そのソースは他人が読むように書かれていない
自分よがりなソースコードなんだよ。

読む方に非があるんじゃなくて、書くほうが悪い
2014/09/17(水) 07:16:49.41ID:5OnPRq9A
自分よがりなんて書いてる奴は、他人に読みやすい文章になるような注意力に欠けた
独りよがりの文章しか書けないんだろうな。
512デフォルトの名無しさん
垢版 |
2014/09/17(水) 12:15:48.80ID:Kfgv1MV9
>>511
うわあ読解力パネェ
2014/09/17(水) 21:24:55.43ID:YtdMSBzp
>>511
> 独りよがりの文章しか書けないんだろうな。
独りよがりって、自分よがりと同じ意味じゃね?
2014/09/17(水) 23:24:58.57ID:IUDVFBKE
君達は本当に頭が悪いんだな
2014/09/18(木) 00:20:18.22ID:spGOayPR
うむ

http://www.weblio.jp/content/%E8%87%AA%E5%88%86%E3%82%88%E3%81%8C%E3%82%8A

自分よがり
読み方:じぶんよがり
別表記:自分善がり

ひとりよがり(独り善がり)に同じ。周囲を顧慮せずに自分の都合や損得のみで物事を考えること。
2014/09/18(木) 19:33:06.94ID:ot8C9XJ5
>>500
まぁほぼ同意だな
2014/09/18(木) 20:26:58.62ID:spGOayPR
>>516
自作自演しなくていいよ。
そんなコメント普通しないからw
2014/09/18(木) 22:19:08.95ID:+GRlEEjB
要求仕様の変更に追随するために設計を変えていくのがリファクタだ

撒き散らしたクソコード直すのはリファクタとは言わん
テストの前に個々人レベルでやる仕事だ
2014/09/18(木) 22:31:11.52ID:Lc9LBSGA
他人が作ったものをメンテする時は
まず他人にやらせろってこと?
2014/09/18(木) 23:29:47.48ID:i6De8Pgm
クソコード直すのがリファクタリングでいいと思うお
2014/09/18(木) 23:52:12.25ID:CfthWkvp
結局言葉遊びの域を出なかったね
2014/09/18(木) 23:53:02.19ID:LNiMu1bm
つーかリファクタリングとか言いにくいから修正でいいじゃん
2014/09/19(金) 00:33:41.85ID:Y0Ellmpg
リファクタリングを定義しようぜ
とりあえずQA形式にして質問と回答は最近の書き込みから適当に埋めた

<<リファクタリングとは>>
Q 何時やるの? A やりたい時。糞コードを見つけたら。今でしょ
Q 具体的には(工程では)いつ? A 回答なし
Q やる必要あるの? A 回答なし
Q 誰がやるの?A 自称上級者
Q 上級者の定義は?A 回答なし
Q その上級者には何かメリットが?A 回答なし
Q リファクタリングってお金もらえるの?A ボランティア
Q どういう効果が期待できるの? A 将来的なリスクを回避する、または逆にリスクを抱える
2014/09/19(金) 17:39:57.70ID:J2pxYtIB
>>500に対して>>503の返しするということは、>>500の話が論が正しいことを>>503が認めているということ。

つまるところ、会社の構成員の実力によって不可能になるということ。
をあんたの会社では〜。の一文で認めている。

ゆえにその切り返しをするなら、リファクタリングは議論する価値がないということ
2014/09/19(金) 17:51:51.67ID:VKWv7B4z
ちょっと何言ってるのかわかりませんわ
2014/09/19(金) 18:08:18.14ID:J2pxYtIB
誰でもできることでないなら、実現は夢物語ということだ
2014/09/19(金) 18:36:04.63ID:iHgvKusj
工程を確保して
下がやりたいと言ったら邪魔するなというだけの話かもしれない
2014/09/19(金) 18:47:45.84ID:5Sq7tp9D
>>524
行き詰まるところ先人達が考えて考えた結果

 新言語の開発

にしか答えがないんだよなww
どんな素人でも言語のルールには逆らえない。つまり従わざるを得ない。
理論だけで劇的な変化があったのなんて

GOTOレス

だけだろ。

わかりやすくステップ数で言うけどjavaで10ステップで組まれていてごちゃごちゃなプログラムがある。
仕様変更するのに1万ステップの変更が必要。これを、新言語おまんこ女学院言語で開発すると、

main()
おまんちょ()

って書くだけで同じ機能が実現され、

仕様変更には

use ここか?ここがええんか?
main
おまんちょ(伝説の第49手目(3箇所、同時、左手だけちょうどいい微速))

って直せば実現できる言語が生まれれば、これ以上の可読性の向上はないわけで。
馬鹿でも簡単に、馬鹿でも可読性が高く、馬鹿でもスピーディーに・・・・を求めて新言語というのは生まれている
2014/09/19(金) 18:48:57.11ID:5Sq7tp9D
>javaで10ステップ

>javaで10万ステップ
に訂正
2014/09/19(金) 19:42:02.22ID:97jwqaFX
>>485
パッケージ製品のメジャーバージョンアップとか?
一般的なIT土方の工事現場にはまず縁ないわな
2014/09/19(金) 20:44:14.36ID:/lOvQPWO
リファクタリングしない人は
修正する時、テストしないの?

テストするならリファクタリングしても
問題ないよね。
2014/09/19(金) 20:59:36.15ID:6gllmAz9
全部埋めてやったぞ

<<リファクタリングとは>>
Q 何時やるの? A やりたい時。糞コードを見つけたら。今でしょ
Q 具体的には(工程では)いつ? A アジャイルですから。工程て何?
Q やる必要あるの? A やらなきゃバグでるよ?いつか破綻するよ?
Q 誰がやるの?A 自称上級者
Q 上級者の定義は?A 糞コードを発見する嗅覚を持つこと
Q その上級者には何かメリットが?A コードが綺麗な方が気持ちいいだろ
Q リファクタリングってお金もらえるの?A ボランティア
Q どういう効果が期待できるの? A 将来的なリスクを回避する、または逆にリスクを抱える
2014/09/19(金) 21:28:04.06ID:/lOvQPWO
<<リファクタリングとは>>
Q 何時やるの? A テスト駆動開発においては、テスト記述→コードを書く→リファクタリング の順番で開発する
Q 具体的には(工程では)いつ? A コードを書いた直後。工程で言えば開発工程
Q やる必要あるの? A 義務だろうね。小説で言えば清書する必要あるの?ぐらいのレベル。
Q 誰がやるの?A 客観的指標(McCab等)で差があるコードを見比べて、優れている方を言えるレベルの人全員
Q 上級者の定義は?A 客観的指標(McCab等)で計測して良いとされるコードを書ける人
Q その上級者には何かメリットが?A 上級者であっても、可読性やメンテナンス性が高いコードの方が早く機能追加・修正・不具合対応ができる。
Q リファクタリングってお金もらえるの?A 開発の一部であり、清書みたいなものなので当然お金はもらえる。
Q どういう効果が期待できるの? A 期待ではなく事実としてメリットがある。メリットは二つ上に書いたとおり。
2014/09/19(金) 21:57:34.29ID:Xfkvubm0
当然お金はもらえるってなんだよワロタ
2014/09/19(金) 22:04:08.26ID:GUgRmWP+
>>534
たとえばさ、誤字脱字、これはあっても読めれば別に問題ないんだよ。
でも見つけたら直すだろう?

そうやって誤字脱字の見直し、修正が例え1時間で終わったとしても
業務である以上、それは給料に変わるんだよ。
2014/09/19(金) 22:35:47.59ID:6gllmAz9
問題ないのに直すのは明らかに無駄な労力だろ
リファクタリングてそういう事なのか?
2014/09/20(土) 00:28:50.80ID:zqGI0i/Q
そこらに地雷が埋まってても踏まなきゃ平気なんだよ
2014/09/20(土) 00:35:33.60ID:BGuuw2+W
>>531
そもそもテストは各工程に含まれてるよね?
一度コードに手を付けたらリファクタリングだろうが何だろうがテストはやり直しだよ
工程をこなしてる間つまりリリースし終わって暇にでもならないと
リファクタリングなんか入り込む余地なんて無いぞ
要するに無駄ってことじゃないの
2014/09/20(土) 01:43:02.74ID:b8OT/FfJ
>>536
「ソースコードを読むのに時間が掛かる」は
一番重要な問題だよ。

それが開発工数の大半を占めているんだから
2014/09/20(土) 10:04:40.32ID:zqGI0i/Q
まあ理論的に完璧なリファクタリング手法を使っても
無関係であるはずの部分でコンパイラやOSのバグを踏んだらそれまでだから
実テストにやたら工数のかかってたらその後はさわれないだろうね
2014/09/20(土) 10:58:44.27ID:b8OT/FfJ
テストやりました。バグが見つかりました。

ソースコードが汚くて、コードの意味がわかりません。
ソースコードが汚くて、バグの原因がわかりません。
あちこちにコピペされてて、バグの修正が大変です。
バグを修正したら、別のバグが発生しました。
バグを修正しましたが、処理が複数のモジュールに
分散していたので多くの再テストが必要です。


こういうのを解決するのがリファクタリング。
2014/09/20(土) 11:27:24.57ID:41dsRCcO
違うね。

> テストやりました。バグが見つかりました。
> (以下略)

それはデバッグや。
2014/09/20(土) 11:43:01.81ID:b8OT/FfJ
>>542
いや、それは前置きだから。

リファクタリングが解決するのは、
デバッグまでの過程で発生する問題。

同じデバッグという目的であっても、
その目的を達成するまでの時間は違うんだよ。
2014/09/20(土) 11:48:06.25ID:zub5QpR2
ちょっと意味が分からない
545デフォルトの名無しさん
垢版 |
2014/09/20(土) 12:22:36.52ID:McF0jAPW
開発段階ですでにスケジュールオーバーしてる現場だらけなのに机上の空論w
新言語開発しろw
2014/09/20(土) 13:18:35.72ID:b8OT/FfJ
>>544
意味がわからないレベルの人っているんだよねw
2014/09/20(土) 14:46:45.86ID:mG0BaSkX
テストってコードを書いた本人がやるべき?
2014/09/20(土) 15:02:25.23ID:uiyrzvHx
リファクタリングすら必要ないほどの腕のいい奴を最初から揃えれば良くね?
というのと同じくらいリファクタリング理論は破綻してる
2014/09/20(土) 15:33:26.65ID:uiyrzvHx
他人のソースコードの解読は新規作成より時間がかかるケースが多々。
仕様がわかってるなら、そんなチェックをお願いしないといけない奴のソースレビューをするより、最初から自分でやったほうが早いし確実
つまり、リファクタリングの行き着く先は、無脳者を開発に入れなければ良いに行き着く。
少数精鋭方式。
2014/09/20(土) 15:48:28.37ID:Jdjsg9Fk
>>548-549
一理あるが理想論
だから現実解としてリファクタリングが出てきたんじゃないのか?
2014/09/20(土) 16:04:59.48ID:b8OT/FfJ
仕様変更っていうのは避けられないものだし、
機能追加や新しく出来た○○に対応するとか
どうしても変化は避けられないわけで
その変化にたいしてコードも変化させていかないといけないんだよ。

それにさ、人っていうのは成長するのは当たり前なのだから、
一年前の自分より、もっと優れたものを書けるようになっているはず。

一年後はさらに優れたものを書けるようになるはずだが、
それは今をきちんとやっていてできること。
過去の自分の真似ばかりしていても、成長はできないよ。
2014/09/20(土) 16:20:19.19ID:gqfYZyci
何を意味の分からん事を
と思ったら、またお前かw
2014/09/20(土) 18:11:49.33ID:b8OT/FfJ
>>552
言い返したいことがあるのなら
なにか言い返していいんだぜ
2014/09/20(土) 20:30:21.92ID:lV8t6mfn
>>550
でもgotoレスと違って誰も実践しないだろ?
そういうことだ。
誰が好き好んで人の尻拭いをやるというのだ
2014/09/20(土) 20:40:59.03ID:Pz5VxQ8p
リファクタリングは有能が無能の尻を拭く作業ではなく自分の尻を拭く作業だ

最初は速度など無視してとりあえず動くように作る
動いたら次に速く動くようにする
速く動いたらそれを読みやすく整える
読みやすくなったら今度は新機能を楽々追加する

これで立派なリファクタリングだ
2014/09/20(土) 21:06:59.81ID:K48fRfz5
速く動くようにするのは一番後でいいだろ
2014/09/20(土) 21:21:43.45ID:npmlG4Eq
>>556
ボトルネックが出来て、そこを解決すれば全体に速度が上がるようなものなら
後からでもどうにかなるが、全体的に微妙に遅い、微妙にリソース食っている、
それで全体的に遅くなってるだと後からじゃどうにもならない。
2014/09/20(土) 21:27:33.19ID:lV8t6mfn
>>555
実際誰もやっていない
それが、この理論の決定的な答え
誰もやらない=やって評価されるどころか、失敗した場合の責任を問われるだけ
メリット一切無い
2014/09/20(土) 21:36:13.07ID:lV8t6mfn
>>555
そもそも、そんなものはリファクタリングではない

リファクタリングは「現時点『運用中』の動いているシステムプログラム」に勝手に手を加えること。
「まがいなりにも動いているシステムのプログラムを勝手にいじるな」
というのが世界の常識。でこの常識を変えようとした思想がリファクタリング。
ただ、結局は、誰もやらんってこと。

理由の大半は「仕様がわからん」ということ。
2014/09/20(土) 21:44:36.36ID:6heECCBq
エクストリームプログラミングから全否定かよ。
カオスだな。
561デフォルトの名無しさん
垢版 |
2014/09/20(土) 21:54:03.46ID:UNVZl8tG
バグを仕込んでしまう可能性があるのが致命的
あとは評価制度の問題だな
長期的に絶対メリットはあるんだがそんなん誰も見ちゃいねえし
2014/09/20(土) 22:00:15.71ID:Pz5VxQ8p
他人の尻を拭くハメになったとき、リファクタリングが可能である唯一の条件は、
引継ぎ時点でリファクタリングされているソースコードであること、だ
そうでなかったらご愁傷様あきらめた方がいい
2014/09/20(土) 22:07:58.53ID:fFGu/96N
>>559
> リファクタリングは「現時点『運用中』の動いているシステムプログラム」に勝手に手を加えること。

なんでウソつくの?

本当と言い返せるものなら言い返していいんだぜ?w
ただし、そんなことをしたら、ソースを要求するので
準備しておくこと。
2014/09/20(土) 22:53:25.35ID:6heECCBq
恐怖駆動開発だな。
http://www.hanselman.com/blog/FearDrivenDevelopmentFDD.aspx

レガシーコードでテストが無い and/or コードに対する理解が無い

エンバグ、ビルドを壊すことへの恐怖
2014/09/20(土) 23:06:54.25ID:K48fRfz5
>>557
新しいマシン買えばいいだけじゃないか
開発費とハードウェア費用どっちが高くつくと思ってるんだ
2014/09/21(日) 01:19:15.97ID:H7xT3+nz
りファクタリングって言うのは、オブジェクト指向の言語(これが大前提)で、
開発段階にあって、試作品が第一段階で問題なく動いて、
あとは性能やコードの見直しやカイゼンだよねって段階で設計へフィードバックするプロセスですよ。
その後に顧客側のチェックと納品ですよね。

運用中のシステムに手を入れるという話では無いですよ。
カイゼンを全否定ならトヨタはどうなるんでしょうか?
567デフォルトの名無しさん
垢版 |
2014/09/21(日) 01:26:54.31ID:UIOIQYIj
一度客に納入してさあ、次に改修の仕事がきたときにリファクタリングしていたから工数が減っていたとしてもなんのメリットもないんだよな。むしろ工数が少なきゃ金が取れない。リファクタリングした分取ったら水増し請求だ。

機能やバグについて同等で、メンテしやすさだけ向上させる工程なんて日本の一般的な開発ではインセンティブゼロだよ。趣味ならともかくプロの仕事なら。

最初からリファクタリングの作業も込みで工数見積もりなり、費用請求しろ、ってそんな見積もり見て納得する客いるわけないじゃん。最初から手直しいらない納品物にして下さい、と言われてオチ。

出来上がってテスト済みのソースをあれこれいじるなんてお遊びが入り込む余地はない。
2014/09/21(日) 01:42:02.59ID:H7xT3+nz
それと、テストという概念は個人がスクリプトやツール類を書く場合には絶対に生まれてこない発想で、
多人数で、複数の技能レベルの人が、仕様書をガイドに組織的に開発に関わる条件下で必然的に生じる仕事上の手続き。

個人がコード書く場合は、ソースコード全体、アルゴリズム、関数やクラスを全て把握しているので
テストコードをいちいち書く必要がない。だからデバックという手順はあっても、関数やクラスのテストコードを
いちいち書くという発想にはならない。コード修正も容易、エラーが発生してもその場で即対応できる個人レベルの作業としては正しい。

組織で開発する部門では他人が必要なコードを仕様化した関数やクラスの動作条件を定めているから、
それを大前提としてモジュール動作をテストする必要がある。一見して馬鹿げている行為に思えるのは、
アルゴリズムを提示せずトップダウン的に関数のIN/OUTのみで仕様を提示するためにモジュールのテストが必須になる。
チェックデータの側面についていえば情報管理上テストデータが必ず必須になる。それは本物と試験用のデータが違うということ。

テストコードは本人が書くと、世界は如何にばかげた行為に時間を費やしているのかと思うだけだが、
本来は書く側は最終コードが動作すると確認した上で、2重チェックとして仕様を作成した側がテストするためのコードなり手段を作るべきだな。
人が居ないというなら、テストコード書くのでなく、統合テスト的に動作チェックすべき。
2014/09/21(日) 01:52:41.82ID:H7xT3+nz
リファクタリングは工数水増しの手段ではない。

保守とは違うので、日本の開発やってる業界のインセンティブなど関係がない。
リファクタリングとは関係がないな。

見積もりの段階でリファクタリングなどの話は出てこない。
手直しが要るといって費用請求している段階で、それはリファクタリングの問題ではなく
失敗したプロジェクトや案件だということだろう。それを誤魔化す為に誰かが嘘として
リファクタリングと言ってるだけだろう。
2014/09/21(日) 02:21:17.93ID:H7xT3+nz
もし>>567が客側の意見であれば、失敗したプロジェクトや案件とは縁を切って
再出発したほうが開発側も、客側も気持ち的にはしあわせになれますよ。
2014/09/21(日) 06:26:59.02ID:4aXz2u5s
>>563

>http://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)

>リファクタリング登場の経緯と目的[編集]
>リファクタリングが登場する以前は、一度正常な動作をしたプログラムは二度と手を触れるべきではないと言われていた。
>下手に手を加えて動作が変わってしまうと、それに伴って関連する部分にも修正が加えられ、やがて修正はプロジェクト
>全体に波及し対処しきれなくなるかも知れない。またソフトウェアテストを十分に行い正常な動作が確認されたとしても、
>そのプログラムをわずかでも改変すれば、バグ (欠陥) が見つかったときに改変があったプログラムを疑わなければならない。
2014/09/21(日) 06:35:53.53ID:4aXz2u5s
>>566
>りファクタリングって言うのは、オブジェクト指向の言語(これが大前提)

は?wwwwwwwwwwwwwwwwwwww
オブジェクト指向とそうではない言語での違いを説明しろよ
オブジェクト指向という言葉になんか宗教的妄信でもしてるのか?
2014/09/21(日) 09:08:44.80ID:aP8Aq0OA
必要なのはコードのリファクタリングではなく
チームメンバのリファクタリングである
2014/09/21(日) 09:29:51.06ID:48QWsy10
言い換えると、ソースコードをリファクタリング出来るように
チームメンバーの技術力を高めることである。
2014/09/21(日) 09:47:59.75ID:dzDyx0VV
> チームメンバのリファクタリングである
リファクタリングて振舞いを変えてはいかんのでは?
2014/09/21(日) 12:25:58.75ID:MCI/5nTd
例えばバグが多く、しかも非常にメンテしにくい糞コードがあったとする
この場合
1. バグを含んだままリファクタリングして、その後バグを直す
2. 先にバグを直して正しいテストを通る様にしてから、リファクタリングに着手する
どっち?
2014/09/21(日) 12:33:35.65ID:48QWsy10
>>576
原則としては2番

ただし、今既に十分なテストがあるのなら、
リファクタリングしてもよい。

ようするに「バグが有ることに気づいていなかった」と考える。

バグが有るといえども、その状態で使われていたのであれば、
問題ない範囲(把握している範囲)で使われていたわけで、
使われていた部分の動きが変わっていなければ何も問題ない。

適切に動いていないバグの部分の動きが変わった所で
誰も困らない。そもそもバグは仕様ではないのだから。
578デフォルトの名無しさん
垢版 |
2014/09/21(日) 13:51:42.60ID:C0Gh49Ld
>>576
2. 一択。
1. は死亡フラグ。
2014/09/21(日) 15:34:48.90ID:4aXz2u5s
ホント現実をみてないな
クソコードの影にクソ仕様書あり

仕様が網羅されていないクソ仕様書、そしてあってるのかあってないのかもわからんクソソース
そして、仕様を完全把握しているものは不在(いない)

コードを読みやすくする?直す?どーやってなおすんだよ正しい仕様不明なのに
手を入れなければ責任問題は自分にはかからない
正式に仕事として認可されるまでは、さわらずほっとく。こんなのが大量なんだ現実は

まともな仕様書を作るやつは、まともなプログラムも書いている。でもそれは修正等々なんて必要のないソース

リファクタリングの対象となるソースは、前者のクソコード、クソ仕様書のほうだ。正解が不明なのにどうやって直すんだ
2014/09/21(日) 16:39:44.45ID:48QWsy10
>>579
具体的に、クソコードになってしまう
クソ仕様の例を言ってみて。
思いつかないんだよね。
2014/09/21(日) 16:40:37.43ID:48QWsy10
> コードを読みやすくする?直す?どーやってなおすんだよ正しい仕様不明なのに

それは、正しい仕様がなければ、
現在のコードの動きを仕様と考えればいいだけ。
2014/09/21(日) 16:53:43.27ID:4aXz2u5s
>>581
クソソース1万ステップもよみとーない
句読点のない文章みたいに処理の区切りがまったくないような文体で書かれたソースなんぞ誰が手をつけるか
2014/09/21(日) 16:54:11.17ID:Ep6XnQTS
開発手法が根本からおかしい
リファクタリング以前の問題
2014/09/21(日) 16:55:08.58ID:4aXz2u5s
>>580
クソ仕様って誰が言った?
クソ仕様「書」って言ってるの。馬鹿なの?あほなの?無能なの?
おまえマ板の無職windowsさんでしょ
2014/09/21(日) 17:12:48.09ID:48QWsy10
>>584
じゃあ、そのクソ仕様書の具体例を
言ってみて。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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