14/07/31 01:15:43.10 jvFYVzT/.net
完璧なテストとか言う以前に、
ろくに自動テストとか書いてないでしょ?
ていうか、レビューもまともに機能してない
(じゃなかったら>>357のケースなんてコードがマージされるはずない)
テストもマトモに書いてないじゃ、そりゃトラブルよ
363:デフォルトの名無しさん
14/07/31 01:21:33.19 1DTVAKx3.net
Excelで書かれたチェックリスト片手に手動でテストして
「散々テストしたのに」って言ってそう
364:デフォルトの名無しさん
14/07/31 07:53:29.99 RHNsF96S.net
>>335
挙動を変えるのはリファクタリングじゃなくて仕様変更だろ
365:デフォルトの名無しさん
14/07/31 21:56:38.46 w9LroIYe.net
仕様変更でもバグ修正でもいいが、
コードを書き換えたら挙動が変わることがある。
つまり、機能追加もバグ修正もするなってことだ。
366:デフォルトの名無しさん
14/07/31 22:08:52.98 t7+Ucdvo.net
ネストが揃ってないとか空行が多いとか
変数がはるか上で宣言されてるけど使ってるのは遥か下に固まってるとか
理解力以前に目が疲れるコードをどうにかしろって言ってるんだよ
367:デフォルトの名無しさん
14/08/01 18:46:58.63 xnEk5c3C.net
変数定義の位置を移動したりスペースを除去したり
するのもリファクタリングなわけだが
368:デフォルトの名無しさん
14/08/01 19:22:03.81 +GTzrZhA.net
失敗例をあげてリファクタリングは糞って言ってるの最高に滑稽。
井戸の王様を気取ってる蛙か
369:デフォルトの名無しさん
14/08/01 20:37:16.99 zWTZP0nt.net
OO批判と同じ流れだな
370:デフォルトの名無しさん
14/08/01 20:43:59.51 fzo9r37p.net
リファクタリングが糞なんじゃないよ
リファクタリングしたがる人が糞なんだよ
371:デフォルトの名無しさん
14/08/01 21:19:55.74 7+EywXB6.net
>>370
ゴミみたいなコードばっか書いてっから
他人にリファクタリングされまくっちゃうんだろ
372:デフォルトの名無しさん
14/08/01 22:07:17.79 2Z4Uf/Xj.net
新人はリファクタしたがっていかん
関数の共通化とかGenericsとかTemplateとか覚えたてのこと使いたがる
ちょっとしたクソが一晩したらそびえたつ巨大なクソに
373:デフォルトの名無しさん
14/08/02 01:12:27.41 tvZxKsuR.net
技術レベルの低い人ってのは初心者に近くて
リファクタリングという技術用語を理解できないんだよ。
だからわかり易い言葉に置き換えるといい
リファクタリング=整理整頓・改善
こう言い換えれば、改善する必要があるんです。
整理整頓すると普段の仕事が捗るんです。ということになる
こう言い換えれば、反対する人はいなくなるよ。
374:デフォルトの名無しさん
14/08/02 01:27:17.11 nhTOdUsW.net
生理整頓した状態を維持しながら仕事しろよw
個人レベルの話ならクソコードをフィックス前にに最低限他人が読めるようにするのなんて責務のうちだ
リファクタはどっちかというと組織再編といったほうがいい
課題と今後の見通しがあってはじめてやることで
375:デフォルトの名無しさん
14/08/02 02:10:54.57 tvZxKsuR.net
>>374
その責務を果たさない奴が、
行き当たりばったりのコード書くんだよな。
そいつに限ってリファクタリングの意味を理解してないという。
もう技術者として終わってるとしか言いようが無いね。
376:デフォルトの名無しさん
14/08/02 08:46:20.40 Mu2XuA5N.net
リファクタリング本を一回読んだとき何を感じるかだよな。
ああそうそう、こういう点で苦しくなってたんだ、って気付くか、
何一つピンとこずに何やってんのこの本?と思うか。
377:デフォルトの名無しさん
14/08/02 11:09:34.62 nhTOdUsW.net
クソコードを普通のコードに直す作業をあんまりリファクタと呼びたくないw
378:デフォルトの名無しさん
14/08/02 11:27:29.15 h5SZ209F.net
結合テストとかまで進んじゃったら無理だよね
379:デフォルトの名無しさん
14/08/02 11:55:25.68 nhTOdUsW.net
リリースした後でバージョンアップのついでにやるもんだろ
380:デフォルトの名無しさん
14/08/02 11:59:50.68 tvZxKsuR.net
ボーイスカウトの法則といって、
コードを修正するときは、修正する前よりも
綺麗にするもんです。
これが出来るのと出来ないのが、
初心者と中級者の境目。
もちろん、出来ないほうが初心者ね。
これが許されるのは新卒1年ぐらいなもん。
381:デフォルトの名無しさん
14/08/02 12:22:30.70 DmU4GxTK.net
規模が小さいうちは手抜きで簡単なコードを書くだろ?
最初から拡張性とかそういうものを考えて作りこまない。
で、規模が大きくなってきた時に、将来性のことを
考慮して作り変えればいいんだが、
最初の手抜きのコードをそのままに、手抜きを真似して
同じようなコードを追加するやつどうにかならんかね。
規模に応じたコードの書き換えをしない。できない。
発想がない。そういうい奴がクソコードを量産するんだよ。
382:デフォルトの名無しさん
14/08/02 12:37:41.39 Ydx1jnyI.net
権限のない末端PGが現場の手続き無視してユニットテストのないコードを
勝手に修正する、自称リファクタリングは非常に迷惑。
日本の受託開発の仕事ではリファクタリングなんてするべきではない。
383:デフォルトの名無しさん
14/08/02 12:42:59.05 DmU4GxTK.net
>>382
ユニットテストが無いことが前提になってる時点で、
やっぱり、その程度の所が、リファクタリングを嫌ってるんだなとしか
思えないよ。残念だったね。君のところの技術不足を露呈しただけ。
えと、技術力不足であることを自覚してね?落ち込むところだよ。
384:デフォルトの名無しさん
14/08/02 13:29:01.01 a3/R4SSz.net
最初から厳密に書けばいいんだよ
手抜きコピーが多いのは、そういうものかと思ってしまうからだ
自称上級者がスタートアップ書くことが多いが、手抜き繰り返して
しまいには自分自身が変な癖背負い込んでいくだろう
初期段階でよい方向に導くには、最初のやつががんばるしかない
385:デフォルトの名無しさん
14/08/02 13:37:36.15 DmU4GxTK.net
人間誰しも、最初は初心者で
一年後には今よりも成長しているという
前提にたつと最初から完璧なコードを書くのは不可能
どんなに優れたコードを書いたとしても
一年後の自分はもっと優れたコードを書ける。
386:デフォルトの名無しさん
14/08/02 14:03:04.41 nhTOdUsW.net
>>385
この程度の奴がリファクタしたがるんだよなあ…
リファクタってのはある設計から別の設計に軸足を移すことだ。
書き散らしたクソコードを書き直すのは、リリース前にやっておくべきそれ以前の問題なんだよ。
お前の末端の画面とか帳票とかは、誰も共通機能として使ってないから汚かろうがクソだろうが問題ないよ。
お前の自己満足のためにプロジェクトとめられてたまるか。
どんなクソでも、客の前にひりだしたクソはてめえのクソだ。受け入れて前に進め。
387:デフォルトの名無しさん
14/08/02 14:06:28.03 nhTOdUsW.net
大体最初からある程度ちゃんとしたプログラムも書けないやつに
まともなユニットテスト作れるわけないだろうが。
388:デフォルトの名無しさん
14/08/02 14:26:29.65 1FEiY+vP.net
理想だけど
組織には逆らえない
389:デフォルトの名無しさん
14/08/02 14:42:12.73 wGpqnjMj.net
関数の中身やprivateな関数のインターフェースを修正するようなリファクタリングと、
ライブラリのpublicなインターフェースを変更するような
影響範囲の大きいリファクタリングの話が混じってる気がする
後者はそう簡単じゃないよ
影響範囲に入る全ての開発者と調整が付かない限り変更できない
(勝手に変更したら、ライブラリ使用者側から見たら仕様変更だからリファクタリングにならない)
390:デフォルトの名無しさん
14/08/02 14:44:44.99 atIEditt.net
初心者にオススメなのは、派生開発でコードを読むときに、動作確認をテストで書くことかな。これはとっつきやすい。
『レガシーコード改善ガイド』では「仕様化テスト」のところ。
391:デフォルトの名無しさん
14/08/02 14:54:07.48 1BrdY1ES.net
>>379
そんな意識の奴と仕事したくないわ
392:デフォルトの名無しさん
14/08/02 15:20:52.89 DmU4GxTK.net
リファクタリングするなっていってる奴がいるけどさ、
時間が十分にあるという前提にたつと
とたんに何も言えなくなってしまう
それってリファクタリングがダメなのではなくて
時間がないという問題だから。
じゃあ、なんで時間が足りないんですか?
今までと同じやり方してるんじゃないですか?って
追い詰めると、泣き出しちゃうw
393:デフォルトの名無しさん
14/08/02 15:21:48.08 DmU4GxTK.net
>>389
そういう場合は、旧関数の互換性を保ちながら
新しい関数を作ればいいんだよ。
394:デフォルトの名無しさん
14/08/02 15:32:36.71 WtoScNjl.net
>>389
そういうことのないように依存性を無くすようにプログラミングする
プログラマの規律が無いだけ
395:デフォルトの名無しさん
14/08/02 17:35:26.06 w2qydRR0.net
当たり前のことを当たり前に理解してそれを前提としている人と、
当たり前のことなのに全く理解しないでそれを前提とできない人とが会話しているようだ。
396:デフォルトの名無しさん
14/08/02 19:06:34.85 jgRhK7n4.net
ウォーターフォールだったり、詳細設計書で日本語プログラミングしたりしてるとこと
リファクタリングは相性悪いよ
開発の全体を見直さないと、一部だけ優れた手法を取り入れようとしても
歪みが出て上手く行かないんだよね
397:デフォルトの名無しさん
14/08/02 19:30:03.16 DmU4GxTK.net
うまくいかないんじゃなくて
難しいだけだろ?
それを実行する力が技術力なわけで。
398:デフォルトの名無しさん
14/08/02 19:41:02.16 q1w4boEu.net
どうしても自分が書いたコードを書きなおしたい人がいるようだけど
そんなコードはいずれバグで書きなおされるんだから、あまり気にしない方が良い。
その情熱は悪くないけど、もっと前向きに使うべきだよ。
399:デフォルトの名無しさん
14/08/02 19:57:31.28 DmU4GxTK.net
前向きって新しいコードを書くってこと?
残念だけど、開発ってのは既存のコードの修正がほとんどだよ。
新しい機能を追加するといっても
前よりも効率よく開発するために既存の部分を、
使いまわす(コピペじゃないからね!)するために
既存の部分を修正して使えるようにするんだから。
400:デフォルトの名無しさん
14/08/02 19:57:37.46 FIwNTFpf.net
>>396みたいな事言ってると、拡張を繰り返すうちにコードが保守不能なカオスになって
もう無理だから全部捨てて作り直しだー、ってなるんだよ
でもSIerとしては、それが飯の種だから良いんだけどね
401:デフォルトの名無しさん
14/08/02 20:03:28.32 DmU4GxTK.net
全部捨てて作り直しだーまで追い詰めるって馬鹿だと思う。
少しずつ変化させていくことができないからそうなるんだよね。
全部いっぺんに変えるなんて現実的じゃないんだから。
全部いっぺんに変えることは不可能。じゃあどうするか?
それに答えられないから、どんどん壊れていくんだよ。
まあ、少しづつ良くしていくことが出来るのも技術力なわけで。
それを頭でわかっているのと実行するのとは全然違うわけで、
その実行できる力ってのが技術力そのものなわけで。
402:デフォルトの名無しさん
14/08/02 20:19:36.36 q1w4boEu.net
>>399
前向きってのは、コード書きの脳からデザイナーの脳に変われるように努力しろって事。
403:デフォルトの名無しさん
14/08/02 20:23:43.06 DmU4GxTK.net
>>402
何に逃げてるのさ?
両方できるようになるというのなら正しい意見だが、
別のものに逃げたらだめだろ。
まるでペンもイラレもろくに使えない奴が
発想力とかいうのに逃げているのと同じ。
コードをまともに書けるようになった上でデザイナーになることはできる。
だけど、コードから逃げてもデザイナーにはなれない。
404:デフォルトの名無しさん
14/08/02 20:23:58.64 J1UwFk0L.net
よくある設計とコーディングっていう役割分担からしてくるっとる。
プログラミングなんて、設計九割五分なのに。
実装なんざオマケのオマケ。
SEとプログラマ、とわけてプログラマがキーボード叩く役とか、きがくるっとる。
まぁ聡明なお前らの会社は違うだろうけどね。
405:デフォルトの名無しさん
14/08/02 20:28:21.78 DmU4GxTK.net
「前向き」って言ってる奴が、
コードとデザインの両方を手に入れるじゃなくて、
コードから逃げてデザインを求めていて笑えるよ。
そういう奴は両方できない。
406:デフォルトの名無しさん
14/08/02 20:33:33.15 a3/R4SSz.net
やっぱり自分でコード書かなきゃやってる気がしない
407:デフォルトの名無しさん
14/08/03 00:40:07.16 ppjITjjs.net
もう最近ガチガチの詳細設計やるとこって殆ど無いだろ
コメント的仮想コードとかで詳細は終わらせちゃうところが多い
その方が柔軟だしな
408:デフォルトの名無しさん
14/08/03 00:45:38.31 CSranqfK.net
一応UMLでシーケンス図とクラスとPublicメソッドだけはきっちり作ってるな
DBアクセスとかあたりまで
そっから先はprivateで実装して
アプリのフレームワークに依存しないメソッドとかクラスとかはプCommonフォルダに各自放り込んでもらう
で上手くいくと思ったけど
Commonがかなりカオスなことに
409:デフォルトの名無しさん
14/08/03 07:51:54.04 KHwMExMo.net
>>407
あー、主に非技術者がやる作業だね。
410:デフォルトの名無しさん
14/08/03 07:57:18.76 mU4IZymt.net
>>408
>Commonがかなりカオスなことに
kwsk
411:デフォルトの名無しさん
14/08/03 10:20:01.47 1nxvzFtA.net
まるで業務系しか仕事がないかの勢いw
412:デフォルトの名無しさん
14/08/03 10:36:51.70 CSranqfK.net
>>410
コードが酷いのは予想のうちだけど
あれだけ言ったのに、規約が守られずにアプリのフレームワークに依存が作られてる
最初あたりに誰かがやったせいで後続が真似して、手続きなんとなくまとめただけみたいな処理がいっぱい
関数の共通化もうまくいってなくて
例えば分かりやすいところでは文字列をバイト列に変換してパディングするって処理があるんだけど
SJisStringUtil.ToByte
DBCodeChanger.LeftPaddingByteArray
StringModel.BytesWithSpace
こんな感じでいっぱいできてる
挙句にsTanakaとかフォルダできてるしw
413:デフォルトの名無しさん
14/08/03 10:42:19.36 KHwMExMo.net
まあありがちやねw
だから規約を作った人は
必ずコードレビューをしなくてはいけない。
414:デフォルトの名無しさん
14/08/03 20:06:25.42 lk1xFWmM.net
>>953
糞設計、糞コード書くような人たちが
集まってコードレビューしてもなんの意味もない
しかもそういう人って声が大きいだけが取り柄みたいな人だろうし
415:デフォルトの名無しさん
14/08/03 21:25:01.28 LWW935BO.net
ロングパスきっちり通せよw
416:デフォルトの名無しさん
14/08/03 23:57:33.38 tNPEJw6R.net
A社に発注して作らせた大規模なソフトを、
B社に一時的にメンテナンスさせて、
今はC社に機能拡張させているとか言う例が実際にあるからなー
それぞれがそレなりにちゃんとした会社であっても、
開発者の継続性が0の場合、
中のソースがかなり混乱するのは仕方ないかもしれん。
417:デフォルトの名無しさん
14/08/04 22:06:42.37 w1xJJUBp.net
リファクタリングはアートですよ。
アートは人間が生み出すものではありません。
ある日、天から降りてくるんです。
この感覚がわからない人は、アートしたことが無いんです。
つまり、リファクタリングもわからないってことです。
418:デフォルトの名無しさん
14/08/04 22:17:15.14 p5AMhKr8.net
わかる、わかるぜ~
ソースコードがある書き方になりたがってねだってくるんだぜ~
俺はそのとおりに書き写してるだけなんだぜ~
419:デフォルトの名無しさん
14/08/04 22:19:31.15 w1xJJUBp.net
やべえ。
適当ぶっこいてたらマジキチ召喚しちまった。
ちょっと反省。
420:デフォルトの名無しさん
14/08/04 22:54:50.48 O7gnQe0p.net
自作自演乙
421:デフォルトの名無しさん
14/08/27 12:13:22.10 RluTUsi0.net
他人のコードだと思って、何の前情報もない状態でコードを読み
そこから読み取れる情報だけで、「なんで?」って思う実装を減らしていくのがリファクタリング
もちろん、処理の効率とかをよくする場合もあるけど、
どっちかというと、そういうのよりも第三者が見て読みやすいコードである状態を保つ事のほうが重要
(リファクタリングで大幅に処理コストが改善できるような糞実装が最初にされてることは稀)
ただ、リファクタリングをできるレベルに達していない職場も少なくない
とくに業務系や人売りで奴隷を集めた職場とかは、大抵メンバーのスキルが足りてなさすぎて無理
っていうか設計(という名のゴミファイル作成)段階からそびえ立つうんこを作っていってるから、実装時は既に手遅れ
422:デフォルトの名無しさん
14/09/04 15:14:28.47 NCM4vLJB.net
リファクタリングの誤用
URLリンク(capsctrl.que.jp)
リファクタリングの境界線
URLリンク(capsctrl.que.jp)
423:デフォルトの名無しさん
14/09/13 02:08:52.13 Bjr83Kqx.net
ボキもリファクタリングして欲しいです
URLリンク(twitter.com)
424:デフォルトの名無しさん
14/09/13 02:46:33.71 99VHFg4q.net
ちんこの振る舞いを保持したまま変化させる、もちろん性的な意味で。
425:デフォルトの名無しさん
14/09/13 03:35:58.05 WOkelzJA.net
インタフェースの変更はリファクタリングか
URLリンク(capsctrl.que.jp)
> 答えは簡単―インタフェースの変更はリファクタリングだ。
未知のバグフィックスはリファクタリングか?
URLリンク(capsctrl.que.jp)
> 私はリファクタリングと呼べると思う。 バグを含んだ振る舞いを知らなかった(あるいは気にしなかった)わけだから、
> これは「外部から見たときの振る舞い」ではないのだ。 たとえバグに気付いていたとしても、
> それが気にするようなバグでなければ、 リファクタリングと呼んでもよいと思う。
最適化はリファクタリングか?
URLリンク(capsctrl.que.jp)
> 最適化とリファクタリングはどちらも変化を伴うものだが(なかには最適化かつリファクタリングとなる変化もあるが)、
> 両者は別物だと私は考えている。なぜなら、両者の目的が異なるからである。リファクタリングは、
> コードを理解しやすくするためである。最適化は、プログラムを速くするためである。
> つまり、リファクタリングと最適化は似ており、共通する変更がありはするものの、目的が異なるため、両者は別物であると私は考えている。
宣言の順序変更はリファクタリングか?
URLリンク(capsctrl.que.jp)
> 宣言(Javaで言うメソッドやフィールド)の順序を変更することは、リファクタリングと呼べるのか?
> リファクタリングの定義で、 「理解や修正が簡単になるように」というフレーズを使った。
> 宣言部分を変更すると、理解や修正が簡単になるのだろうか? 私は、そういう場合もあると思う。
> ソフトウェアの内部構造を変更しないという点が紛らわしいかもしれない。 リネームしても実行内容は変化しない。
> だがリネームは、プログラムの理解度を向上させる 非常に重要なリファクタリングの一種である。
426:デフォルトの名無しさん
14/09/13 13:49:13.80 9aicrkfD.net
あれもこれも取り入れた「オブジェクト指向」とまるっきり同じパターンだな
どんどん曖昧な意味になりそう
427:デフォルトの名無しさん
14/09/13 14:14:43.12 Fgrmdz5F.net
すべてリファクタリングの結果発生する作業だろ。
まったく理解できていないな。まさに本末転倒
428:デフォルトの名無しさん
14/09/13 16:14:30.25 WJGPx/6o.net
要件を仕様にまとめるのもリファクタリングですか?
429:デフォルトの名無しさん
14/09/13 20:28:39.39 Y1nBtaE7.net
>>428
リファクタリングの一部ではあるな
430:デフォルトの名無しさん
14/09/13 20:33:35.66 zttb1Mfl.net
OpenSSLがリファクタリングされまくっているな
431:デフォルトの名無しさん
14/09/14 00:35:49.32 a/rqPd2y.net
>>428
違う
> リファクタリング中に2,3日システムが動かなくなっちゃってーなどと言ってる奴がいたら、
> んなもんリファクタリングじゃあなーいと言ってやれ。 ドキュメントをリファクタリングしちゃるとか言ってる奴、
> それもリファクタリングじゃねーぞコラ。 そういうのは、リストラクチャリング(再構築)というのだッ
432:デフォルトの名無しさん
14/09/14 02:43:07.06 XHTMIvTT.net
客の要件はそのままプログラムにできるけど、
それじゃあ最適化できてないから
外面の挙動は変わらない範囲で最適化を行う。
コードの実体だけがリファクタリングの対象じゃないだろ。
433:デフォルトの名無しさん
14/09/14 03:54:19.00 a/rqPd2y.net
>>432
それこそがリファクタリングの誤用で
リファクタリングではないと述べられていること。
434:デフォルトの名無しさん
14/09/14 10:24:07.39 NZ+I8Nx6.net
最適化じゃないんだよ
最適化なんかできるわけねーだろってのが大前提なんだよ
435:デフォルトの名無しさん
14/09/14 13:02:21.11 bjSSfYoR.net
バグも含めて機能そのままで、構造だけ変える(良くするつもり)ができるっていうのが結構単純な
還元主義的な思い込みで、実際の構造物は両者は一体というか、都合良くできないと思うんだよね。
テスト駆動とかもそうだけど、この種のスローガンが胡散臭いのは、物作りの本質的な困難を直視
しないで、小手先の技法を当てはめれば解決みたいに喧伝しすぎるところにあるんじゃないかと思う。
436:デフォルトの名無しさん
14/09/14 14:21:12.62 TJC+Xrrg.net
別に胡散臭いとは思わないが、真に受けちゃったバカが「リファクタリング最強!」とか言い出すのはかなりうざい。
437:デフォルトの名無しさん
14/09/14 15:42:46.67 a/rqPd2y.net
>>435
> バグも含めて機能そのままで、構造だけ変える(良くするつもり)ができるっていうのが結構単純な
> 還元主義的な思い込みで、
できるよ。
というか、リファクタリングは構造を良くしましょう(終わり)じゃなくて、
構造を良くするのは当然の話しとして、機能をそのままにするためにはどうすればいいか?
って所が出発点で、
機能をそのままにするために、編み出された様々なテクニックが
リファクタリング手法なんだよ。
できないというのなら、リファクタリング手法(それには名前が付いている)
一つ一つに対して出来ない根拠を述べてみてよ。
君は単に、リファクタリングに手法があることを知らないで、
闇雲に自己流でなおそうとしてみて失敗しただけでしょう?
438:デフォルトの名無しさん
14/09/14 15:44:54.17 a/rqPd2y.net
なんだ、自分で自白してるじゃんかw
> この種のスローガン
スローガンとしか認識していないw
リファクタリングは、数学的な証明と
なんらかわらないんだが。
439:デフォルトの名無しさん
14/09/14 18:12:37.41 d9eejC+C.net
ダメなコードは直すことでよくできる
という公理が大前提
1000行もあるようなおバカ関数を数学的に定式化して改善するのは無意味なこと
見れば何をすべきかわかる
440:デフォルトの名無しさん
14/09/14 18:52:51.74 a/rqPd2y.net
>>439
つまりどういうこと?
リファクタリングすればいいって話を
言葉を変えていってるだけだよね?
441:デフォルトの名無しさん
14/09/14 19:25:36.36 3Rt2m2d6.net
リファクタリングを知らない人は、
リファクタリングを一気に直してしまおうと
思っているに違いない。
リファクタリングが問題が起きることがありえない
小さな修正の繰り返しであることをしらない。
442:デフォルトの名無しさん
14/09/14 19:30:47.61 NZ+I8Nx6.net
デザパタ信者みたいなのが暴走して悪評を広めてるんだろう
443:デフォルトの名無しさん
14/09/14 19:32:04.00 3Rt2m2d6.net
その悪評を鵜呑みにしているのが
頭悪いと言われる所以なわけで。
自分の頭で考えろよとw
444:デフォルトの名無しさん
14/09/14 21:08:34.07 oiv3svus.net
リファクタリング
445:デフォルトの名無しさん
14/09/15 00:27:34.64 irRiVyM3.net
流石に数学の定理と同等か言い過ぎだろ。
パターンと同じでさ、セオリーやメソッドじゃない、ちょっとしたコツの集積だろ
オブジェクト指向、CMMI、PMBOKとかと同じでさ、アメリカ人の教授とかはそういうのまとめて
自分が言い出しっぺになって、学会ごっこしたり、資格試験の元締めやろうとしたりするのが好きなんだよ。
そういう商売に乗せられているだけなのに、さも学術的な根拠があるものとして「勉強」したりするのが
偉いと思っている奴はどっかオツムが弱いとしか言いようがないw
446:デフォルトの名無しさん
14/09/15 00:37:25.87 9UWhhSIJ.net
>>445
数学の定理じゃなくて、数学の証明だろ?
a + b = c を b = c - a
に置き換えるようなもの。
式の変形だよ。
リファクタリングのテクニックっていうのはどれも
この式の変形と同じようなもの。
一部の人が勘違いしているように、ぶっ壊して同じように作りなおすことじゃなくて、
項の移動のように、全く同じ結果になる変形をしているにすぎないんだよ。
447:デフォルトの名無しさん
14/09/15 00:39:47.71 9UWhhSIJ.net
>>445
あと警告として、自分が知らないことを
勉強している奴は生意気だっていうのやめたほうがいいよ。
中学生かよ。あいつ勉強なんかしてるんだぜーってw
448:デフォルトの名無しさん
14/09/15 00:43:11.40 irRiVyM3.net
何が「警告」だよ
笑わせるな
449:デフォルトの名無しさん
14/09/15 00:44:52.76 9UWhhSIJ.net
いや、普通に恥ずかしいでしょ?
ガリ勉ガリ勉いって勉強しない悪ガキ。
自分が後で困るというのに。
警告してあげないといつまでたっても
気づかないよ。
450:デフォルトの名無しさん
14/09/15 01:15:03.90 WaQuX0Y8.net
ぶっ壊して同じ結果が得られるように作り直すこととの違いを教えてください。
451:デフォルトの名無しさん
14/09/15 01:41:27.21 j8xvklWY.net
イチから作り直したい病と
現実の範囲で出来る事だけやる工夫の違い
452:デフォルトの名無しさん
14/09/15 02:07:53.50 WaQuX0Y8.net
機能やクラスを抽出するのだって破壊を伴うんじゃないの。
リスクが少ない範囲での変更もあれば、
時には大胆なリファクタリングもあると思うけど。
453:デフォルトの名無しさん
14/09/15 04:21:21.27 9UWhhSIJ.net
>>450
> ぶっ壊して同じ結果が得られるように作り直すこととの違いを教えてください。
たとえば数学で、3x - 11 = 4 のxを求めるという問題があった時
1. 移項とい手法を使って、3x = 4 + 11 にして、
2. 足し算という手法を使って、3x = 15 にして
3. 両辺を同じ数で割るという手法を使って、x = 5
という風に、変形をしても等しいと証明されている
安全な手法を使ってシンプルな形に変形していくのがリファクタリング
>>452
大胆なリファクタリングって何よ?
まずさ、数学の式の変形のやり方と一緒で、
リファクタリング手法には名前があるって知ってる?
一覧見つけてきたから、これのどれが大胆で破壊を伴うのかちゃんと説明してくれ。
URLリンク(d.hatena.ne.jp)
454:デフォルトの名無しさん
14/09/15 04:22:40.33 9UWhhSIJ.net
>>452が言ってる、
大胆なリファクタリングというのは、
これらの手法を使わずに
いきなり最終的な答えを
だそうとしていることでしょ?
それはリファクタリングじゃない。
455:デフォルトの名無しさん
14/09/15 04:24:53.24 9UWhhSIJ.net
>>451も少し勘違いしているね。
リファクタリングを「ソースコードを綺麗にしましょう」ということを
英語で言ったものとしか認識していないようだ。
リファクタリングというのは、安全に変形できるという
手法を使って、いっぽずつ書き換えていくもの。
手法を使わない書き換えはリファクタリングじゃない。
456:デフォルトの名無しさん
14/09/15 10:57:57.36 z+pQ6G77.net
>>455
それな
その手法の確立というか
その手法の念押しというか
そういう面も大きい
457:デフォルトの名無しさん
14/09/15 11:09:38.77 pNNQiIbO.net
これがリファクタ信者の暴走か
458:デフォルトの名無しさん
14/09/15 11:28:39.31 kUSteVkT.net
リファクタリングの「関数の抽出」をやったら
増えた関数呼び出し分の実行コストが無視出来なくて
仕様を満たさなくなってしまいました
459:デフォルトの名無しさん
14/09/15 11:46:22.25 9UWhhSIJ.net
>>458
そしたら「関数のインライン化」という
リファクタリングをすれば
動作を変えることなく、仕様を満たせるようになるよ。
やっぱり問題が起きた時にやるのは
リファクタリングだね(笑)
460:デフォルトの名無しさん
14/09/15 11:49:22.77 kUSteVkT.net
つまり途中で一回ぶっ壊して同じ結果が得られるように作り直すわけね
良いと思うよ
461:デフォルトの名無しさん
14/09/15 12:21:05.22 NXR59SQz.net
リファクタリングがゲシュタルト崩壊しそうなスレだ。
462:デフォルトの名無しさん
14/09/15 12:43:17.41 zrs0o34A.net
安全を過信しすぎだな
463:デフォルトの名無しさん
14/09/15 12:46:23.34 9UWhhSIJ.net
>>460
一回ぶっ壊したらだめだろw
それではリファクタリングになっていない。
リファクタリングは壊さずに直すことであり
壊さないで直すための手法がまとめられている。
URLリンク(d.hatena.ne.jp)
464:デフォルトの名無しさん
14/09/15 13:45:51.89 kUSteVkT.net
>>463
>>458の操作で一回ぶっ壊れてるじゃん
少なくとも「関数の抽出」はリファクタリングの操作としてアトミックじゃない
465:デフォルトの名無しさん
14/09/15 15:20:24.10 4lL49qVx.net
慌てずリファクタリングの公式に沿って変更すれば副作用は一切ない。
466:デフォルトの名無しさん
14/09/15 15:20:49.07 9UWhhSIJ.net
>>464
> 少なくとも「関数の抽出」はリファクタリングの操作としてアトミックじゃない
アトミックだけど?
リファクタリング本を見ればしっかり書いてあるよ。
アトミックに作業する方法。
どうせあんたは関数を消して書きなおす(書き直してる間
元の関数がなくなってる状態)が起きるって思ってるんだろうけど。
ほんと、やり方をしらんのね。しらんから壊れるって言ってる。
わかりやすい。
467:デフォルトの名無しさん
14/09/15 15:21:50.80 9UWhhSIJ.net
ちなみに、リファクタリングブラウザを使えばもっと簡単に行える。
もちろん、リファクタリング本にはそういうツールを使わないやり方も書いてある。
468:デフォルトの名無しさん
14/09/15 15:45:17.66 wmpEGwKw.net
>>458と>>459の間に一回壊れてるよね
469:デフォルトの名無しさん
14/09/15 15:51:22.11 wmpEGwKw.net
>>466
手で書き直したとかじゃなくて、メソッドの抽出することで
仕様を満たさなくなるケースもあるって話だろう
その直後にインライン化したとしても、一旦仕様を満たさない状態になったのは事実
470:デフォルトの名無しさん
14/09/15 15:53:23.99 KlWrYY91.net
まあ俺ぐらいリファクタリングに精通すると、最初からリファクタリング後の最終形になるように最初からコーディングできちゃうわけで、あえてリファクタリングを意識しなくていいわけなんだけどね。
中島敦の「名人伝」にでてくる「弓ってなに?」といった弓の名手のごとし。
471:デフォルトの名無しさん
14/09/15 15:55:47.97 9UWhhSIJ.net
>>468
壊れてないよw
ばかなのかな?
人の話きかないよね。
472:デフォルトの名無しさん
14/09/15 15:57:45.71 9UWhhSIJ.net
>>469
> 手で書き直したとかじゃなくて、メソッドの抽出することで
> 仕様を満たさなくなるケースもあるって話だろう
メソッドの抽出で仕様を満たさなくなることはありません。
> その直後にインライン化したとしても、一旦仕様を満たさない状態になったのは事実
あんたの言ってる「仕様」って関数呼び出し○ナノ秒以内で
あることっていう要件の話だよね?w
それは仕様ではない。
473:デフォルトの名無しさん
14/09/15 16:00:52.19 9UWhhSIJ.net
>>470
それは過剰な設計になってるよ。
コードの規模に応じて、適切な設計というのは異なる。
コードに修正が入る、それがバグの修正でない限り
機能化拡張だろう。
機能拡張にともなって規模が増るというような時にリファクタリングをするんだ。
機能追加とリファクタリングはわけてやるものだから、
機能追加前、もしくは機能追加後にリファクタリングね。
最初から過剰な拡張性をもたせるのはよくない。
474:デフォルトの名無しさん
14/09/15 16:31:02.56 9UWhhSIJ.net
今更ながら>>1が言っていたことって正しいんだなって思った。
ソースコードを綺麗に作りなおすのがリファクタリングだって
思っている奴が多いこと多いこと。
475:デフォルトの名無しさん
14/09/15 16:59:56.60 WaQuX0Y8.net
ポリモーフィズム化するのは機能追加だアホ
476:デフォルトの名無しさん
14/09/15 17:07:57.72 kUSteVkT.net
>>472
> あんたの言ってる「仕様」って関数呼び出し○ナノ秒以内で
> あることっていう要件の話だよね?w
> それは仕様ではない。
ループの中で繰り返し呼び出されたら馬鹿にならん差になることもある
仕様かどうかはケースバイケースだアホ
477:デフォルトの名無しさん
14/09/15 17:15:35.47 kUSteVkT.net
リファクタリングの「関数のインライン化」をやったら
生成されるプログラムのバイナリサイズが許容範囲を超えて
仕様を満たさなくなってしまいました
478:デフォルトの名無しさん
14/09/15 17:17:53.19 9UWhhSIJ.net
ID:kUSteVkT必死すぎだなw
”要件” を満たせないなら、
同じ仕様のまま 要件を満たすように
リファクタリングすればいいだろうw
479:デフォルトの名無しさん
14/09/15 17:32:28.60 9UWhhSIJ.net
ID:kUSteVkTアは書いたコードが要件を満たせなかったら
そのコードを捨てて一から作り直んだろうかw
480:デフォルトの名無しさん
14/09/15 17:33:12.92 kUSteVkT.net
一日中スレに張り付いてる ID:9UWhhSIJ に必死過ぎと言われてもな…
で、リファクタリングの手法に則って変換しても
要件を満たせないケースがあると認めるのか?
481:デフォルトの名無しさん
14/09/15 17:38:23.74 9UWhhSIJ.net
やっと要件といったねw
リファクタリングは仕様を変えずに
コードをわかりやすい形に修正するものだから
要件を満たさなく慣れば、満たすように
リファクタリングすればいいってことで終わる話だ。
なんせリファクタリングしても仕様は変わらないのだから
仕様を変えずに要件を満たせるように作り変えられる。
482:デフォルトの名無しさん
14/09/15 17:44:05.42 kUSteVkT.net
>>481
いや、俺は最後に修正をコミットするときに仕様を満たしてれば
途中で壊れてようがリファクタリングとしてOKって立場だから、それで良いよ
でも、お前はリファクタリングの手法に則ってれば
絶対に壊れることは無いっていう立場だろ?(>>453-455)
483:デフォルトの名無しさん
14/09/15 18:58:56.46 j8xvklWY.net
絶対に壊れない奥義は秘中の秘で
師匠に皆伝を認められないと伝授してもらえないんだよ
484:デフォルトの名無しさん
14/09/15 19:33:35.36 wbbrJGCJ.net
リファクタリングってどのタイミングでやる事を想定してるのかな
プロジェクトにそんな工程存在しないし
終わって凍結したコードを後から修正なんてしないでしょ
不具合とか新機能とか更改する案件が出てきて初めて
次のプロジェクトやりましょうってなるわけでしょ
そうなったとしてコードの機能追加や修正はあっても
このスレで言う仕様通りに動くものにわざわざ手をつけるなんてことするかな
485:デフォルトの名無しさん
14/09/15 19:40:39.59 q3fGkS61.net
やりたい時がやるべき時なんだよ。
コードがクソだと思ったら何時でもそれがリファクタリングのタイミング。
486:デフォルトの名無しさん
14/09/15 19:58:17.80 wbbrJGCJ.net
だからそんなタイミングなんて実際存在しないよねって話をしてるのに
487:デフォルトの名無しさん
14/09/15 20:46:42.81 q3fGkS61.net
>>486
だからコードがクソだと思わなかったらやる必要ないんだって
488:デフォルトの名無しさん
14/09/15 21:25:15.72 9UWhhSIJ.net
>>482
> いや、俺は最後に修正をコミットするときに仕様を満たしてれば
> 途中で壊れてようがリファクタリングとしてOKって立場だから、それで良いよ
リファクタリングの誤用
URLリンク(capsctrl.que.jp)
> ……のだが、リファクタリングは、適切に使われてはいない。
> リファクタリング中に2,3日システムが動かなくなっちゃってーなどと言ってる奴がいたら、
> んなもんリファクタリングじゃあなーいと言ってやれ。 ドキュメントをリファクタリング
> しちゃるとか言ってる奴、 それもリファクタリングじゃねーぞコラ。 そういうのは、リストラクチャリング(再構築)というのだッ。
> リファクタリングはより具体的な技術のことで、 小さな「振る舞いを保持したままの変化」
> (リファクタリングと呼ばれている)から成り立っている。 システムをリファクタリングするときは、
> 数分以上、システムが壊れたままにしてはいけない。
489:デフォルトの名無しさん
14/09/15 21:31:41.31 eEkAvSkz.net
>>485
>やりたい時がやるべき時なんだよ。
趣味だよなこういうのは
死ぬまでいじってろ
490:デフォルトの名無しさん
14/09/15 21:36:40.31 9UWhhSIJ.net
>>489
趣味とは、汚くても動けばいい。と
客の前で言えないことを、こっそりやること。
491:デフォルトの名無しさん
14/09/15 22:30:57.87 kUSteVkT.net
>>488
コミットするまでシステムはそのままなんだから(正確にはデプロイするまでだが)
完全にリファクタリングの定義に沿ってるよね
誤用してるのはお前だね
492:デフォルトの名無しさん
14/09/15 22:47:48.33 W2xZfE+V.net
IDEのリファクタリングのメニューから選べる機械的にできる変換のみを
リファクタリングとする派閥があるんだよ
要件を満たすかではなく、機械的にできる事が重要なわけ
なお、これは底辺の馬鹿でも可能な「ドカタ・スタイル」として認知されてる
493:デフォルトの名無しさん
14/09/15 23:33:30.39 jSabMZv+.net
>>491
これはひどい
バカというより迷惑
494:デフォルトの名無しさん
14/09/16 02:50:25.03 BRRsQsEe.net
>>445
>オブジェクト指向、CMMI、PMBOKとかと同じでさ、アメリカ人の教授とかはそういうのまとめて
>自分が言い出しっぺになって、学会ごっこしたり、資格試験の元締めやろうとしたりするのが好きなんだよ。
リファクタリングって、資格試験制度や学会作ろうって動きがあるのかな?
パターンはなんかやってるところあるよね。
495:デフォルトの名無しさん
14/09/16 04:23:48.75 1lKEIB+1.net
>>492
> IDEのリファクタリングのメニューから選べる機械的にできる変換のみを
> リファクタリングとする派閥があるんだよ
それは、リファクタリングをわかってない派閥であり、
無知なリファクタリング反対派となんらかわらないよ。
リファクタリング本を読んでいれば、
リファクタリングブラウザで行えるのは
リファクタリングのほんの一部だって知ってる。
496:デフォルトの名無しさん
14/09/16 12:38:21.05 5ipzkeYr.net
リファクタラー内部抗争勃発
497:デフォルトの名無しさん
14/09/16 13:41:58.56 UosJEOFn.net
リファクタリング前と後で同じテストが通ればOK派と、
リファクタリング中のどの時点でもテストが通らないとダメ派か。
498:デフォルトの名無しさん
14/09/16 19:13:39.64 BRRsQsEe.net
リファクタリングのアトミックな単位は一文字削除
499:デフォルトの名無しさん
14/09/16 20:19:15.75 c0zqQ2NF.net
>>1
リファクタリング自体が理想論。
つまりは、自分(以下A)と同等かそれ以上の腕の持ち主だけで人材が構成されている必要がある。ただし、これは自分視点。
しかし、この状態だと、A以上の腕の持ち主からAを見ると、Aは足手まといで汚いソースを作り上げる元凶。
上級者が、切磋琢磨していく状態なら良いが、上級者なんて1%もいない。99%の下手が次々と入ってきてクズソースを乱発。
腕の良い者達は、クズソースのリファクタ作業だけをやるハメに。
腕の良い者達だけでやっていれば、もっと早く開発ができるのに。しかしリファクタリングというとできるのは腕の良いものだけ。
よってクズの尻拭いを永久にやらされる上級者は、腐る。
そしておしまい。
リファクタ云々よりクズの徹底排除こそ最優先。
それがなされなければ、確実にクズソースの生成のほうが圧倒的に早い。
500:デフォルトの名無しさん
14/09/16 20:29:13.06 c0zqQ2NF.net
3行で言うと
1%の有能な人間のリファクタリングの速度より
99%を占めるクズが作り出すクズソース量産スピードのほうが速い
だから、間に合わない。
ということだね。
501:デフォルトの名無しさん
14/09/16 21:19:30.50 LXIAs8Mg.net
隠された4行目は
そして、1%の有能な人間はここにはいない。
か?
502:デフォルトの名無しさん
14/09/16 21:22:31.12 1lKEIB+1.net
>>499
何が理想論なのかと思えば、
あんたの会社では無理って話なんだね。
503:デフォルトの名無しさん
14/09/17 00:27:57.13 5OnPRq9A.net
また俺の会社すげえ自慢か
ITドカタのクセに生意気だ
504:デフォルトの名無しさん
14/09/17 01:33:42.78 ZHv/uS3X.net
なんで力量がはっきりしてない人のソースレビューもせずに、
終わってからリファクタリングしてるの。クズじゃないの。
自分のコード書くだけが仕事じゃねーんだぞ。
505:デフォルトの名無しさん
14/09/17 01:41:26.78 bT3aRSk/.net
リファクタリングが工程になのであればら、彼の知っている開発手法はそもそもTDDに向いてないので、その前提でTDDの話なんてできないと思うのです
世の中にはCIって概念があるのを知らないのだろうか
まぁ土方なら仕方ないと思いますが
506:デフォルトの名無しさん
14/09/17 01:43:13.03 bT3aRSk/.net
TDDすれと間違えたし、誤字りまくった
てへぺろ
507:デフォルトの名無しさん
14/09/17 02:10:48.96 B5vXdL5P.net
リバースエンジニアリングが難しいのと同じで、
自分でソースを書くよりも、
他人が書いたソースを読むのは、ずっと難しい
仕様書→ソースは、簡単
ソース→仕様書は、難しい
508:デフォルトの名無しさん
14/09/17 04:16:14.76 YtdMSBzp.net
>>503
> また俺の会社すげえ自慢か
俺の会社だせえ自慢じゃね?w
509:デフォルトの名無しさん
14/09/17 04:18:50.43 YtdMSBzp.net
>>507
> 他人が書いたソースを読むのは、ずっと難しい
最近これ違うと思うようになってきた。
他人が書いたソースが読みにくいと思ったら
そのソースは他人が読むように書かれていない
自分よがりなソースコードなんだよ。
読む方に非があるんじゃなくて、書くほうが悪い
510:デフォルトの名無しさん
14/09/17 07:16:49.41 5OnPRq9A.net
自分よがりなんて書いてる奴は、他人に読みやすい文章になるような注意力に欠けた
独りよがりの文章しか書けないんだろうな。
511:デフォルトの名無しさん
14/09/17 12:15:48.80 Kfgv1MV9.net
>>510
うわあ読解力パネェ
512:デフォルトの名無しさん
14/09/17 21:24:55.43 YtdMSBzp.net
>>510
> 独りよがりの文章しか書けないんだろうな。
独りよがりって、自分よがりと同じ意味じゃね?
513:デフォルトの名無しさん
14/09/17 23:24:58.57 IUDVFBKE.net
君達は本当に頭が悪いんだな
514:デフォルトの名無しさん
14/09/18 00:20:18.22 spGOayPR.net
うむ
URLリンク(www.weblio.jp)
自分よがり
読み方:じぶんよがり
別表記:自分善がり
ひとりよがり(独り善がり)に同じ。周囲を顧慮せずに自分の都合や損得のみで物事を考えること。
515:デフォルトの名無しさん
14/09/18 19:33:06.94 ot8C9XJ5.net
>>499
まぁほぼ同意だな
516:デフォルトの名無しさん
14/09/18 20:26:58.62 spGOayPR.net
>>515
自作自演しなくていいよ。
そんなコメント普通しないからw
517:デフォルトの名無しさん
14/09/18 22:19:08.95 +GRlEEjB.net
要求仕様の変更に追随するために設計を変えていくのがリファクタだ
撒き散らしたクソコード直すのはリファクタとは言わん
テストの前に個々人レベルでやる仕事だ
518:デフォルトの名無しさん
14/09/18 22:31:11.52 Lc9LBSGA.net
他人が作ったものをメンテする時は
まず他人にやらせろってこと?
519:デフォルトの名無しさん
14/09/18 23:29:47.48 i6De8Pgm.net
クソコード直すのがリファクタリングでいいと思うお
520:デフォルトの名無しさん
14/09/18 23:52:12.25 CfthWkvp.net
結局言葉遊びの域を出なかったね
521:デフォルトの名無しさん
14/09/18 23:53:02.19 LNiMu1bm.net
つーかリファクタリングとか言いにくいから修正でいいじゃん
522:デフォルトの名無しさん
14/09/19 00:33:41.85 Y0Ellmpg.net
リファクタリングを定義しようぜ
とりあえずQA形式にして質問と回答は最近の書き込みから適当に埋めた
<<リファクタリングとは>>
Q 何時やるの? A やりたい時。糞コードを見つけたら。今でしょ
Q 具体的には(工程では)いつ? A 回答なし
Q やる必要あるの? A 回答なし
Q 誰がやるの?A 自称上級者
Q 上級者の定義は?A 回答なし
Q その上級者には何かメリットが?A 回答なし
Q リファクタリングってお金もらえるの?A ボランティア
Q どういう効果が期待できるの? A 将来的なリスクを回避する、または逆にリスクを抱える
523:デフォルトの名無しさん
14/09/19 17:39:57.70 J2pxYtIB.net
>>499に対して>>502の返しするということは、>>499の話が論が正しいことを>>502が認めているということ。
つまるところ、会社の構成員の実力によって不可能になるということ。
をあんたの会社では~。の一文で認めている。
ゆえにその切り返しをするなら、リファクタリングは議論する価値がないということ
524:デフォルトの名無しさん
14/09/19 17:51:51.67 VKWv7B4z.net
ちょっと何言ってるのかわかりませんわ
525:デフォルトの名無しさん
14/09/19 18:08:18.14 J2pxYtIB.net
誰でもできることでないなら、実現は夢物語ということだ
526:デフォルトの名無しさん
14/09/19 18:36:04.63 iHgvKusj.net
工程を確保して
下がやりたいと言ったら邪魔するなというだけの話かもしれない
527:デフォルトの名無しさん
14/09/19 18:47:45.84 5Sq7tp9D.net
>>523
行き詰まるところ先人達が考えて考えた結果
新言語の開発
にしか答えがないんだよなww
どんな素人でも言語のルールには逆らえない。つまり従わざるを得ない。
理論だけで劇的な変化があったのなんて
GOTOレス
だけだろ。
わかりやすくステップ数で言うけどjavaで10ステップで組まれていてごちゃごちゃなプログラムがある。
仕様変更するのに1万ステップの変更が必要。これを、新言語おまんこ女学院言語で開発すると、
main()
おまんちょ()
って書くだけで同じ機能が実現され、
仕様変更には
use ここか?ここがええんか?
main
おまんちょ(伝説の第49手目(3箇所、同時、左手だけちょうどいい微速))
って直せば実現できる言語が生まれれば、これ以上の可読性の向上はないわけで。
馬鹿でも簡単に、馬鹿でも可読性が高く、馬鹿でもスピーディーに・・・・を求めて新言語というのは生まれている
528:デフォルトの名無しさん
14/09/19 18:48:57.11 5Sq7tp9D.net
>javaで10ステップ
を
>javaで10万ステップ
に訂正
529:デフォルトの名無しさん
14/09/19 19:42:02.22 97jwqaFX.net
>>484
パッケージ製品のメジャーバージョンアップとか?
一般的なIT土方の工事現場にはまず縁ないわな
530:デフォルトの名無しさん
14/09/19 20:44:14.36 /lOvQPWO.net
リファクタリングしない人は
修正する時、テストしないの?
テストするならリファクタリングしても
問題ないよね。
531:デフォルトの名無しさん
14/09/19 20:59:36.15 6gllmAz9.net
全部埋めてやったぞ
<<リファクタリングとは>>
Q 何時やるの? A やりたい時。糞コードを見つけたら。今でしょ
Q 具体的には(工程では)いつ? A アジャイルですから。工程て何?
Q やる必要あるの? A やらなきゃバグでるよ?いつか破綻するよ?
Q 誰がやるの?A 自称上級者
Q 上級者の定義は?A 糞コードを発見する嗅覚を持つこと
Q その上級者には何かメリットが?A コードが綺麗な方が気持ちいいだろ
Q リファクタリングってお金もらえるの?A ボランティア
Q どういう効果が期待できるの? A 将来的なリスクを回避する、または逆にリスクを抱える
532:デフォルトの名無しさん
14/09/19 21:28:04.06 /lOvQPWO.net
<<リファクタリングとは>>
Q 何時やるの? A テスト駆動開発においては、テスト記述→コードを書く→リファクタリング の順番で開発する
Q 具体的には(工程では)いつ? A コードを書いた直後。工程で言えば開発工程
Q やる必要あるの? A 義務だろうね。小説で言えば清書する必要あるの?ぐらいのレベル。
Q 誰がやるの?A 客観的指標(McCab等)で差があるコードを見比べて、優れている方を言えるレベルの人全員
Q 上級者の定義は?A 客観的指標(McCab等)で計測して良いとされるコードを書ける人
Q その上級者には何かメリットが?A 上級者であっても、可読性やメンテナンス性が高いコードの方が早く機能追加・修正・不具合対応ができる。
Q リファクタリングってお金もらえるの?A 開発の一部であり、清書みたいなものなので当然お金はもらえる。
Q どういう効果が期待できるの? A 期待ではなく事実としてメリットがある。メリットは二つ上に書いたとおり。
533:デフォルトの名無しさん
14/09/19 21:57:34.29 Xfkvubm0.net
当然お金はもらえるってなんだよワロタ
534:デフォルトの名無しさん
14/09/19 22:04:08.26 GUgRmWP+.net
>>533
たとえばさ、誤字脱字、これはあっても読めれば別に問題ないんだよ。
でも見つけたら直すだろう?
そうやって誤字脱字の見直し、修正が例え1時間で終わったとしても
業務である以上、それは給料に変わるんだよ。
535:デフォルトの名無しさん
14/09/19 22:35:47.59 6gllmAz9.net
問題ないのに直すのは明らかに無駄な労力だろ
リファクタリングてそういう事なのか?
536:デフォルトの名無しさん
14/09/20 00:28:50.80 zqGI0i/Q.net
そこらに地雷が埋まってても踏まなきゃ平気なんだよ
537:デフォルトの名無しさん
14/09/20 00:35:33.60 BGuuw2+W.net
>>530
そもそもテストは各工程に含まれてるよね?
一度コードに手を付けたらリファクタリングだろうが何だろうがテストはやり直しだよ
工程をこなしてる間つまりリリースし終わって暇にでもならないと
リファクタリングなんか入り込む余地なんて無いぞ
要するに無駄ってことじゃないの
538:デフォルトの名無しさん
14/09/20 01:43:02.74 b8OT/FfJ.net
>>535
「ソースコードを読むのに時間が掛かる」は
一番重要な問題だよ。
それが開発工数の大半を占めているんだから
539:デフォルトの名無しさん
14/09/20 10:04:40.32 zqGI0i/Q.net
まあ理論的に完璧なリファクタリング手法を使っても
無関係であるはずの部分でコンパイラやOSのバグを踏んだらそれまでだから
実テストにやたら工数のかかってたらその後はさわれないだろうね
540:デフォルトの名無しさん
14/09/20 10:58:44.27 b8OT/FfJ.net
テストやりました。バグが見つかりました。
ソースコードが汚くて、コードの意味がわかりません。
ソースコードが汚くて、バグの原因がわかりません。
あちこちにコピペされてて、バグの修正が大変です。
バグを修正したら、別のバグが発生しました。
バグを修正しましたが、処理が複数のモジュールに
分散していたので多くの再テストが必要です。
こういうのを解決するのがリファクタリング。
541:デフォルトの名無しさん
14/09/20 11:27:24.57 41dsRCcO.net
違うね。
> テストやりました。バグが見つかりました。
> (以下略)
それはデバッグや。
542:デフォルトの名無しさん
14/09/20 11:43:01.81 b8OT/FfJ.net
>>541
いや、それは前置きだから。
リファクタリングが解決するのは、
デバッグまでの過程で発生する問題。
同じデバッグという目的であっても、
その目的を達成するまでの時間は違うんだよ。
543:デフォルトの名無しさん
14/09/20 11:48:06.25 zub5QpR2.net
ちょっと意味が分からない
544:デフォルトの名無しさん
14/09/20 12:22:36.52 McF0jAPW.net
開発段階ですでにスケジュールオーバーしてる現場だらけなのに机上の空論w
新言語開発しろw
545:デフォルトの名無しさん
14/09/20 13:18:35.72 b8OT/FfJ.net
>>543
意味がわからないレベルの人っているんだよねw
546:デフォルトの名無しさん
14/09/20 14:46:45.86 mG0BaSkX.net
テストってコードを書いた本人がやるべき?
547:デフォルトの名無しさん
14/09/20 15:02:25.23 uiyrzvHx.net
リファクタリングすら必要ないほどの腕のいい奴を最初から揃えれば良くね?
というのと同じくらいリファクタリング理論は破綻してる
548:デフォルトの名無しさん
14/09/20 15:33:26.65 uiyrzvHx.net
他人のソースコードの解読は新規作成より時間がかかるケースが多々。
仕様がわかってるなら、そんなチェックをお願いしないといけない奴のソースレビューをするより、最初から自分でやったほうが早いし確実
つまり、リファクタリングの行き着く先は、無脳者を開発に入れなければ良いに行き着く。
少数精鋭方式。
549:デフォルトの名無しさん
14/09/20 15:48:28.37 Jdjsg9Fk.net
>>547-548
一理あるが理想論
だから現実解としてリファクタリングが出てきたんじゃないのか?
550:デフォルトの名無しさん
14/09/20 16:04:59.48 b8OT/FfJ.net
仕様変更っていうのは避けられないものだし、
機能追加や新しく出来た○○に対応するとか
どうしても変化は避けられないわけで
その変化にたいしてコードも変化させていかないといけないんだよ。
それにさ、人っていうのは成長するのは当たり前なのだから、
一年前の自分より、もっと優れたものを書けるようになっているはず。
一年後はさらに優れたものを書けるようになるはずだが、
それは今をきちんとやっていてできること。
過去の自分の真似ばかりしていても、成長はできないよ。
551:デフォルトの名無しさん
14/09/20 16:20:19.19 gqfYZyci.net
何を意味の分からん事を
と思ったら、またお前かw
552:デフォルトの名無しさん
14/09/20 18:11:49.33 b8OT/FfJ.net
>>551
言い返したいことがあるのなら
なにか言い返していいんだぜ
553:デフォルトの名無しさん
14/09/20 20:30:21.92 lV8t6mfn.net
>>549
でもgotoレスと違って誰も実践しないだろ?
そういうことだ。
誰が好き好んで人の尻拭いをやるというのだ
554:デフォルトの名無しさん
14/09/20 20:40:59.03 Pz5VxQ8p.net
リファクタリングは有能が無能の尻を拭く作業ではなく自分の尻を拭く作業だ
最初は速度など無視してとりあえず動くように作る
動いたら次に速く動くようにする
速く動いたらそれを読みやすく整える
読みやすくなったら今度は新機能を楽々追加する
これで立派なリファクタリングだ
555:デフォルトの名無しさん
14/09/20 21:06:59.81 K48fRfz5.net
速く動くようにするのは一番後でいいだろ
556:デフォルトの名無しさん
14/09/20 21:21:43.45 npmlG4Eq.net
>>555
ボトルネックが出来て、そこを解決すれば全体に速度が上がるようなものなら
後からでもどうにかなるが、全体的に微妙に遅い、微妙にリソース食っている、
それで全体的に遅くなってるだと後からじゃどうにもならない。
557:デフォルトの名無しさん
14/09/20 21:27:33.19 lV8t6mfn.net
>>554
実際誰もやっていない
それが、この理論の決定的な答え
誰もやらない=やって評価されるどころか、失敗した場合の責任を問われるだけ
メリット一切無い
558:デフォルトの名無しさん
14/09/20 21:36:13.07 lV8t6mfn.net
>>554
そもそも、そんなものはリファクタリングではない
リファクタリングは「現時点『運用中』の動いているシステムプログラム」に勝手に手を加えること。
「まがいなりにも動いているシステムのプログラムを勝手にいじるな」
というのが世界の常識。でこの常識を変えようとした思想がリファクタリング。
ただ、結局は、誰もやらんってこと。
理由の大半は「仕様がわからん」ということ。
559:デフォルトの名無しさん
14/09/20 21:44:36.36 6heECCBq.net
エクストリームプログラミングから全否定かよ。
カオスだな。
560:デフォルトの名無しさん
14/09/20 21:54:03.46 UNVZl8tG.net
バグを仕込んでしまう可能性があるのが致命的
あとは評価制度の問題だな
長期的に絶対メリットはあるんだがそんなん誰も見ちゃいねえし
561:デフォルトの名無しさん
14/09/20 22:00:15.71 Pz5VxQ8p.net
他人の尻を拭くハメになったとき、リファクタリングが可能である唯一の条件は、
引継ぎ時点でリファクタリングされているソースコードであること、だ
そうでなかったらご愁傷様あきらめた方がいい
562:デフォルトの名無しさん
14/09/20 22:07:58.53 fFGu/96N.net
>>558
> リファクタリングは「現時点『運用中』の動いているシステムプログラム」に勝手に手を加えること。
なんでウソつくの?
本当と言い返せるものなら言い返していいんだぜ?w
ただし、そんなことをしたら、ソースを要求するので
準備しておくこと。
563:デフォルトの名無しさん
14/09/20 22:53:25.35 6heECCBq.net
恐怖駆動開発だな。
URLリンク(www.hanselman.com)
レガシーコードでテストが無い and/or コードに対する理解が無い
↓
エンバグ、ビルドを壊すことへの恐怖
564:デフォルトの名無しさん
14/09/20 23:06:54.25 K48fRfz5.net
>>556
新しいマシン買えばいいだけじゃないか
開発費とハードウェア費用どっちが高くつくと思ってるんだ
565:デフォルトの名無しさん
14/09/21 01:19:15.97 H7xT3+nz.net
りファクタリングって言うのは、オブジェクト指向の言語(これが大前提)で、
開発段階にあって、試作品が第一段階で問題なく動いて、
あとは性能やコードの見直しやカイゼンだよねって段階で設計へフィードバックするプロセスですよ。
その後に顧客側のチェックと納品ですよね。
運用中のシステムに手を入れるという話では無いですよ。
カイゼンを全否定ならトヨタはどうなるんでしょうか?
566:デフォルトの名無しさん
14/09/21 01:26:54.31 UIOIQYIj.net
一度客に納入してさあ、次に改修の仕事がきたときにリファクタリングしていたから工数が減っていたとしてもなんのメリットもないんだよな。むしろ工数が少なきゃ金が取れない。リファクタリングした分取ったら水増し請求だ。
機能やバグについて同等で、メンテしやすさだけ向上させる工程なんて日本の一般的な開発ではインセンティブゼロだよ。趣味ならともかくプロの仕事なら。
最初からリファクタリングの作業も込みで工数見積もりなり、費用請求しろ、ってそんな見積もり見て納得する客いるわけないじゃん。最初から手直しいらない納品物にして下さい、と言われてオチ。
出来上がってテスト済みのソースをあれこれいじるなんてお遊びが入り込む余地はない。
567:デフォルトの名無しさん
14/09/21 01:42:02.59 H7xT3+nz.net
それと、テストという概念は個人がスクリプトやツール類を書く場合には絶対に生まれてこない発想で、
多人数で、複数の技能レベルの人が、仕様書をガイドに組織的に開発に関わる条件下で必然的に生じる仕事上の手続き。
個人がコード書く場合は、ソースコード全体、アルゴリズム、関数やクラスを全て把握しているので
テストコードをいちいち書く必要がない。だからデバックという手順はあっても、関数やクラスのテストコードを
いちいち書くという発想にはならない。コード修正も容易、エラーが発生してもその場で即対応できる個人レベルの作業としては正しい。
組織で開発する部門では他人が必要なコードを仕様化した関数やクラスの動作条件を定めているから、
それを大前提としてモジュール動作をテストする必要がある。一見して馬鹿げている行為に思えるのは、
アルゴリズムを提示せずトップダウン的に関数のIN/OUTのみで仕様を提示するためにモジュールのテストが必須になる。
チェックデータの側面についていえば情報管理上テストデータが必ず必須になる。それは本物と試験用のデータが違うということ。
テストコードは本人が書くと、世界は如何にばかげた行為に時間を費やしているのかと思うだけだが、
本来は書く側は最終コードが動作すると確認した上で、2重チェックとして仕様を作成した側がテストするためのコードなり手段を作るべきだな。
人が居ないというなら、テストコード書くのでなく、統合テスト的に動作チェックすべき。
568:デフォルトの名無しさん
14/09/21 01:52:41.82 H7xT3+nz.net
リファクタリングは工数水増しの手段ではない。
保守とは違うので、日本の開発やってる業界のインセンティブなど関係がない。
リファクタリングとは関係がないな。
見積もりの段階でリファクタリングなどの話は出てこない。
手直しが要るといって費用請求している段階で、それはリファクタリングの問題ではなく
失敗したプロジェクトや案件だということだろう。それを誤魔化す為に誰かが嘘として
リファクタリングと言ってるだけだろう。
569:デフォルトの名無しさん
14/09/21 02:21:17.93 H7xT3+nz.net
もし>>566が客側の意見であれば、失敗したプロジェクトや案件とは縁を切って
再出発したほうが開発側も、客側も気持ち的にはしあわせになれますよ。
570:デフォルトの名無しさん
14/09/21 06:26:59.02 4aXz2u5s.net
>>562
>URLリンク(ja.wikipedia.org)(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)
>リファクタリング登場の経緯と目的[編集]
>リファクタリングが登場する以前は、一度正常な動作をしたプログラムは二度と手を触れるべきではないと言われていた。
>下手に手を加えて動作が変わってしまうと、それに伴って関連する部分にも修正が加えられ、やがて修正はプロジェクト
>全体に波及し対処しきれなくなるかも知れない。またソフトウェアテストを十分に行い正常な動作が確認されたとしても、
>そのプログラムをわずかでも改変すれば、バグ (欠陥) が見つかったときに改変があったプログラムを疑わなければならない。
571:デフォルトの名無しさん
14/09/21 06:35:53.53 4aXz2u5s.net
>>565
>りファクタリングって言うのは、オブジェクト指向の言語(これが大前提)
は?wwwwwwwwwwwwwwwwwwww
オブジェクト指向とそうではない言語での違いを説明しろよ
オブジェクト指向という言葉になんか宗教的妄信でもしてるのか?
572:デフォルトの名無しさん
14/09/21 09:08:44.80 aP8Aq0OA.net
必要なのはコードのリファクタリングではなく
チームメンバのリファクタリングである
573:デフォルトの名無しさん
14/09/21 09:29:51.06 48QWsy10.net
言い換えると、ソースコードをリファクタリング出来るように
チームメンバーの技術力を高めることである。
574:デフォルトの名無しさん
14/09/21 09:47:59.75 dzDyx0VV.net
> チームメンバのリファクタリングである
リファクタリングて振舞いを変えてはいかんのでは?
575:デフォルトの名無しさん
14/09/21 12:25:58.75 MCI/5nTd.net
例えばバグが多く、しかも非常にメンテしにくい糞コードがあったとする
この場合
1. バグを含んだままリファクタリングして、その後バグを直す
2. 先にバグを直して正しいテストを通る様にしてから、リファクタリングに着手する
どっち?
576:デフォルトの名無しさん
14/09/21 12:33:35.65 48QWsy10.net
>>575
原則としては2番
ただし、今既に十分なテストがあるのなら、
リファクタリングしてもよい。
ようするに「バグが有ることに気づいていなかった」と考える。
バグが有るといえども、その状態で使われていたのであれば、
問題ない範囲(把握している範囲)で使われていたわけで、
使われていた部分の動きが変わっていなければ何も問題ない。
適切に動いていないバグの部分の動きが変わった所で
誰も困らない。そもそもバグは仕様ではないのだから。
577:デフォルトの名無しさん
14/09/21 13:51:42.60 C0Gh49Ld.net
>>575
2. 一択。
1. は死亡フラグ。
578:デフォルトの名無しさん
14/09/21 15:34:48.90 4aXz2u5s.net
ホント現実をみてないな
クソコードの影にクソ仕様書あり
仕様が網羅されていないクソ仕様書、そしてあってるのかあってないのかもわからんクソソース
そして、仕様を完全把握しているものは不在(いない)
コードを読みやすくする?直す?どーやってなおすんだよ正しい仕様不明なのに
手を入れなければ責任問題は自分にはかからない
正式に仕事として認可されるまでは、さわらずほっとく。こんなのが大量なんだ現実は
まともな仕様書を作るやつは、まともなプログラムも書いている。でもそれは修正等々なんて必要のないソース
リファクタリングの対象となるソースは、前者のクソコード、クソ仕様書のほうだ。正解が不明なのにどうやって直すんだ
579:デフォルトの名無しさん
14/09/21 16:39:44.45 48QWsy10.net
>>578
具体的に、クソコードになってしまう
クソ仕様の例を言ってみて。
思いつかないんだよね。
580:デフォルトの名無しさん
14/09/21 16:40:37.43 48QWsy10.net
> コードを読みやすくする?直す?どーやってなおすんだよ正しい仕様不明なのに
それは、正しい仕様がなければ、
現在のコードの動きを仕様と考えればいいだけ。
581:デフォルトの名無しさん
14/09/21 16:53:43.27 4aXz2u5s.net
>>580
クソソース1万ステップもよみとーない
句読点のない文章みたいに処理の区切りがまったくないような文体で書かれたソースなんぞ誰が手をつけるか
582:デフォルトの名無しさん
14/09/21 16:54:11.17 Ep6XnQTS.net
開発手法が根本からおかしい
リファクタリング以前の問題
583:デフォルトの名無しさん
14/09/21 16:55:08.58 4aXz2u5s.net
>>579
クソ仕様って誰が言った?
クソ仕様「書」って言ってるの。馬鹿なの?あほなの?無能なの?
おまえマ板の無職windowsさんでしょ
584:デフォルトの名無しさん
14/09/21 17:12:48.09 48QWsy10.net
>>583
じゃあ、そのクソ仕様書の具体例を
言ってみて。
585:デフォルトの名無しさん
14/09/21 17:14:26.03 48QWsy10.net
>>581
> 句読点のない文章みたいに処理の区切りがまったくないような文体で書かれたソースなんぞ誰が手をつけるか
でも、バグがあったら直さないといけないし、
仕様変更、機能追加があったら、手を付けないといけないよね?
586:デフォルトの名無しさん
14/09/21 17:24:56.25 SqCSMf85.net
うちのソースコードはほとんどが綺麗だから
句読点のない文章みたいに処理の区切りがまったくないような文体で書かれたソース
なんてほとんど無いよ。
そんな汚いソースがたくさんある所は、
手をつける箇所=リファクタリングするべき場所でしょう。
587:デフォルトの名無しさん
14/09/21 17:25:48.01 J4CuFh4O.net
この板はガセネタをもとにした煽り合いのスレしかないみたいだな
・××と言われているが本当は○○
・こんなことも知らないの?
これが2ちゃんクヲリチーだな
588:デフォルトの名無しさん
14/09/21 19:17:45.62 4aXz2u5s.net
>>584
作ってあげるよ、クソ仕様書
機能:
俺の心の中にあるいい塩梅で、業務を遂行する処理
以上
これは極端に書いたが、冗談抜きで口頭で仕様をやりとりしたのか
いっさい、仕様書に、当該機能部分の記載がない。
589:デフォルトの名無しさん
14/09/21 20:05:10.80 6N1L/uhm.net
嫌なら辞めれば良いのに
って思う
590:デフォルトの名無しさん
14/09/21 20:10:42.85 qWzZkk5b.net
>>589
どっちにたいして言ってるのかわからんよ、その文では
クソシステムが嫌と言ってる人に言ってるのか、
リファクタリングwをしないやつはだめだって言ってるやつに言ってるのか
どっちにも解釈できる
591:デフォルトの名無しさん
14/09/21 21:44:29.99 5OzBoJXn.net
クソソース1万ステップ読まなくていいようにするためにリファクタリングするんじゃないか
592:デフォルトの名無しさん
14/09/21 21:45:48.38 9ZybMmhl.net
マーチン・フラウアーのリファクタリング本てruby版とjava版て言語が違うだけで内容は重複してるの?
それとも別の内容が多いから両方買った方がいい?
593:デフォルトの名無しさん
14/09/21 22:48:11.16 SqCSMf85.net
>>588
それがソースコードとなんの関係があるの?
その曖昧な仕様によって、作られる機能が
曖昧になるだろう。
だが、機能が曖昧になるだけで、
それを実現するコードの読みやすさは関係ないはずだ。
594:デフォルトの名無しさん
14/09/21 23:01:02.38 SqCSMf85.net
>>592
>>453ででてるリンク先の一覧が内容の比較として使えるよ。
多くは重複しているが、それぞれ片方にしかないものもある。
と思ったが、Java版、新装版がでたんだったか。
旧版、新装版、両方持っているが新装版の方はまだ見てないやw
ぱっとみ片方にしかないものは、言語の特徴によるものっぽいから
重複率は同じか少し高くなるだけだろうね。
それでも俺はそのうちRuby版かうけどねw
595:デフォルトの名無しさん
14/09/22 01:14:38.68 8ME10ieO.net
リファクタリング真理教か原理主義かしらんがウゼエ
596:デフォルトの名無しさん
14/09/22 06:10:50.31 mZl8n2a+.net
>>595
リファクタリングっつって真理教とか妄想するお前が一番オームくさい。
リファクタリング大勝利!!!
597:デフォルトの名無しさん
14/09/22 06:22:02.06 VFEp2OOw.net
Aさんがリファクタリングしました。
Bさんが読みましたAさんのリファクタリングがクソです。Bさん直しました。
Cさん見ましたBさんのソースコードクソです。Cさん直しました。
永遠と、、、、、
個人の力量、感性によって結果が大きく作用してしまうものは、学術的工学的な基本がないからどうにもならない。
598:デフォルトの名無しさん
14/09/22 08:09:32.93 mZl8n2a+.net
普通は、
Aさんがリファクタリングしました。
Bさんが読みましたAさんのリファクタリングがクソです。Bさん直しました。
Cさん見ましたBさんのソースコードクソです。Cさん直しました。
Cさんリファクタリング大勝利!!! ・・・でしょ?
599:デフォルトの名無しさん
14/09/22 08:34:50.21 mZl8n2a+.net
Class レイザラモンFoo Extends Object
Public サルinit(void);
Public クエリFoo(String SQL文はクソ);
Protect ないですFoo(void);
Destractor システム緊急停止オペ呼んでくさいFoo(void);
End Class
こんな仕様のクラスを業務システムのスーパークラスにしてあとは全て継承
という仕様は誰だって疑問を持つと思うんだが、そこを直すのがリファクタリング。
リファクタリング大勝利!!!
600:デフォルトの名無しさん
14/09/22 11:41:29.79 y9q7ZqSb.net
>>597
それリファクタリング関係ないしw
なぜなら、俺が作ったコードを誰かが編集した時に、
変な修正の仕方をされることがあるから。
それを直すのがリファクタリングなわけ。
601:デフォルトの名無しさん
14/09/22 12:15:28.88 4rgv3mOC.net
>>598
再びAさんが担当した時、Cさんのコードを読めず仕事になりませんでした。
Cさんリファクタリング大勝利!!!
602:デフォルトの名無しさん
14/09/22 13:03:42.75 BRLO2XpR.net
優れたの方コードを採用すればいいだけだろ。
603:デフォルトの名無しさん
14/09/22 13:12:39.94 8Zrs8f+9.net
個人の知識の違いによってソースの見え方が違うからな
アホが天才のコードを見ると何じゃこりゃってなるし、逆もまた然り
604:デフォルトの名無しさん
14/09/22 13:51:20.75 BRLO2XpR.net
知識って・・・そんなの一機能5分もあれば
知らない状態から理解できるだろ。
どんだけ素人なんだ?
つーか知らない時点で、判断できないわけで
議論からはお役御免なわけだが
605:デフォルトの名無しさん
14/09/22 13:53:03.85 BRLO2XpR.net
それに、知らないなら何をやっているか
理解できないわけで、リファクタリング出来るわけがないな。
606:デフォルトの名無しさん
14/09/22 17:49:10.78 8HtrhTyn.net
おれはやらな~いw
これでリファクタリングは崩壊するwww
607:デフォルトの名無しさん
14/09/22 19:42:14.76 OvpzlkOF.net
アホみたいな話だが結局>>597が真理だよな。
リファクタリングする人は、自分のコードもいずれリファクタリングされる事を受けいれねばならん。
608:デフォルトの名無しさん
14/09/22 20:32:19.28 0yRqeFm6.net
リファクタリングはただのコード修正と思ってもらってかまわない
609:デフォルトの名無しさん
14/09/22 20:44:04.47 jEzIKioA.net
リファクタリングするよ派はここでなにしてんの?しないよ派とじゃれあってるのが楽しいの?
やり合ってる本人は議論してるつもりかもしれないけど、外から見てるとしょうもなさすぎてww
610:デフォルトの名無しさん
14/09/22 21:11:07.07 BRLO2XpR.net
>>606
それは単に、プログラム?なにそれおいしいの?
動けばいいでしょ?って言ってるだけでしょう?
そんな会社はリファクタリング以前に
仕事が終わってる。
611:デフォルトの名無しさん
14/09/22 22:45:37.55 rMqlGcxC.net
>>1が考えるようなことは誰もが考えてる。
その結果、新しい開発言語が生まれているということを理解できないのか?
過去、多くの開発手法・開発スタイルが提唱されたが、
社会に受け入れられたものは、「理論」と「それを強制する新しい開発言語」が常にワンセットになっていた
「超絶スパゲッティコード」を少しでもまともにするために
原因の「goto」を取り除く方法として、「gotoレス」という理論とともに「3つの基本構造を使うようにした、構造化プログラミング言語」が生まれ
「グローバル変数の多用がデバッグを困難にする問題」を少しでもまともにするために
原因の「不必要にメモリをどこからでもアクセスできる状態」を取り除くため「カプセル化」が提唱され、オブジェクト指向言語に組み込まれ
等々・・・・。
何を持ってリファクタリングといいたいのかわからないが、汚いコードを綺麗なコードになおすというなら。
リファクタリングが成功したといえる、最終のコードはどのようなものなのか。具体的に示す必要がある。
プログラムとして存在するあらゆるコードパターンに対応した、綺麗なコードを示してくれ。
それを明示できないうちは>>597の意見が正しい。
個人の感性次第なら、汚いコードと周りは言うが書いているプログラマにとってはリファクタリング不要な綺麗なコードと判断するだろう。
先人達は、その時代のプログラムコードの問題を考えた。
その答えが、理論を具現化した新プログラミング言語の開発だ。
>>1はしのごのいうなら、リファクタリング後の形になるプログラミング言語を生み出せ。
どんな馬鹿でも、その綺麗なプログラミングになるプログラミング言語を。
612:デフォルトの名無しさん
14/09/22 22:52:50.40 BRLO2XpR.net
>611
新しい言語というから何かと思えば
gotoレスとかカプセル化とか
全然新しくないじゃないか。
30年ぐらい前の話だろ。
613:デフォルトの名無しさん
14/09/22 22:55:02.43 BRLO2XpR.net
> 何を持ってリファクタリングといいたいのかわからないが
無知は勉強すればいいだけ。恥ずかしいことなんて無いよ!
>>422, >>425あたりを読むといいよ。
リファクタリングの誤用
URLリンク(capsctrl.que.jp)
リファクタリングの境界線
URLリンク(capsctrl.que.jp)
インタフェースの変更はリファクタリングか
URLリンク(capsctrl.que.jp)
> 答えは簡単―インタフェースの変更はリファクタリングだ。
未知のバグフィックスはリファクタリングか?
URLリンク(capsctrl.que.jp)
> 私はリファクタリングと呼べると思う。 バグを含んだ振る舞いを知らなかった(あるいは気にしなかった)わけだから、
> これは「外部から見たときの振る舞い」ではないのだ。 たとえバグに気付いていたとしても、
> それが気にするようなバグでなければ、 リファクタリングと呼んでもよいと思う。
最適化はリファクタリングか?
URLリンク(capsctrl.que.jp)
> 最適化とリファクタリングはどちらも変化を伴うものだが(なかには最適化かつリファクタリングとなる変化もあるが)、
> 両者は別物だと私は考えている。なぜなら、両者の目的が異なるからである。リファクタリングは、
> コードを理解しやすくするためである。最適化は、プログラムを速くするためである。
宣言の順序変更はリファクタリングか?
URLリンク(capsctrl.que.jp)
> 宣言(Javaで言うメソッドやフィールド)の順序を変更することは、リファクタリングと呼べるのか?
> リファクタリングの定義で、 「理解や修正が簡単になるように」というフレーズを使った。
> 宣言部分を変更すると、理解や修正が簡単になるのだろうか? 私は、そういう場合もあると思う。
> ソフトウェアの内部構造を変更しないという点が紛らわしいかもしれない。 リネームしても実行内容は変化しない。
614:デフォルトの名無しさん
14/09/22 22:58:10.11 BRLO2XpR.net
>>613を見ればわかるけど、
リファクタリングを
汚いコードを綺麗なコードに直すこと
とは書いてないんだよね。
なんでこんなふうに間違って解釈してるのかな?
それって、汚いコードが(あなたの所に)多いってだけで、
リファクタリング以前の解決するべき問題だよね?
リファクタリングとはソフトウェアの変化とともに、
あるべき設計に安全に変化させる方法のこと。
615:デフォルトの名無しさん
14/09/22 23:03:19.25 rMqlGcxC.net
>>612
あ?30年前だ?
がきんちょがてきとーなことぬかしてんじゃねーぞ?
30年前のコードならgoto乱発が現役だ
汎用機に大量にその証拠があるわ
どあほが。
616:デフォルトの名無しさん
14/09/22 23:04:10.78 rMqlGcxC.net
>>614
具体性がございません。
個人の感性次第でよろしいですか?
なら退職時、全部アセンブラコードだけにしちゃいますがw
617:デフォルトの名無しさん
14/09/22 23:24:14.03 OvpzlkOF.net
>>614
(お前にとっての)あるべき設計だな
618:デフォルトの名無しさん
14/09/23 07:26:06.78 0ZBouPvA.net
このスレも
↓のスレも
ソースコード品質検定試験が世の中には必要だ
スレリンク(prog板)
同一人物が立てたスレだと自白しました。
そして、人物の正体も自白しました。
>5 名前:仕様書無しさん[sage] 投稿日:2014/09/22(月) 17:48:09.54
>無職Windowsしか使えないリファクタリング馬鹿がまたスレたてやがった
>
>6 名前:仕様書無しさん[sage] 投稿日:2014/09/22(月) 21:31:27.59
>>>5
>たてたね。それで?
>
>なにか言い返したいことがあるのなら
>いっていいだぜ?w
>
>7 自分:仕様書無しさん[sage] 投稿日:2014/09/23(火) 07:22:55.61
>>>5
>自然と、「無職」「Windowsしか使えない」「ム板でリファクタリングスレ」を立てたことを認めているww
さすが、無職でWindowsしか使えないだけはあるw
だれも同調してくれないww 説得力もカリスマ性も感じないからなw
619:デフォルトの名無しさん
14/09/23 12:26:15.85 aBTcR7ac.net
>>616
具体例はここに書いてあるよ。
> >>613を見ればわかるけど、
>
> リファクタリングを
> 汚いコードを綺麗なコードに直すこと
> とは書いてないんだよね。
620:デフォルトの名無しさん
14/09/23 16:29:00.40 wrw0I4Vi.net
まだ無職が語るの?
恥ずかしいからお前の社会的立場を恥ずかしくない位置にリファクタリングしてからプログラムのリファクタリングを語れよw
621:デフォルトの名無しさん
14/09/23 16:45:57.11 wrw0I4Vi.net
しかし、この超売り手市場なのに就職出来ないって、相当無能なんだな
622:デフォルトの名無しさん
14/09/24 17:32:35.84 iVFJW3Cg.net
いやぁ馬鹿スレを止めてくれてありがたい
完全に自爆だけどな(笑
623:デフォルトの名無しさん
14/09/25 08:00:06.24 2gwTj0ip.net
え?
マジで!?いろいろ見て回ってきたけど
ゲーム作りたくてプログラマになったけど、就職できず、Windowsしか扱えないので、派遣でコボルやるもクビになって無職
なの?!( ;´Д`)
そんな身分で、現役のプロのプログラマにプログラム、プログラミングにたついて講釈たれてたの?
ε-(´∀`; )
どんだけ、恥知らずというか、身の程知らずというか、小保方というか。
空いた口が塞がらないわ(^◇^;)
マジでお前自信をリファクタしろよ(・Д・)ノ
624:デフォルトの名無しさん
14/09/25 12:50:36.36 fB0UYRRr.net
という妄想を書く人って、
実社会では自分が落ちこぼれなのかな。
625:デフォルトの名無しさん
14/09/25 17:28:15.70 oxMb9EZk.net
不用意に自供しといて妄想とかw
626:デフォルトの名無しさん
14/10/05 23:35:12.83 gYmu4Dn/.net
リファクタリング良さそうなんだけど、いろいろ疑問点があります
上で内部的インターフェイスの変更もリファクタリングに含まれるという話がありましたが
インターフェイスを作り変えたら対応するテストケースも作り変える必要がありますよね?
その場合、リファクタリング内でテストケースに手を付けて
インターフェイスとテストケースを同時に作ってしまっていいものでしょうか?
外部的インターフェイスに指定したテストケースのみパスすれば
問題ないと考えるのでしょうか?
627:デフォルトの名無しさん
14/10/07 01:36:41.20 0pCKu6Fp.net
テストケースは全部通さないと駄目だよ
人間の書くテストが全部網羅してるとも限らないから
テストの穴を突いた部分が他所で影響してるかもしれない
原則としてよほどの事でもない限り一度リリースしたら手をつけないがベスト
リファクタリングなんて幻想だからやめなさい
628:デフォルトの名無しさん
14/10/07 09:53:16.20 pP8u07NL.net
インタフェースを作り替えたらテストも必要
というかテストできない・しづらいインタフェースを作ったらあかん
629:627
14/10/07 20:19:23.95 J1sG3mPW.net
>>627
> テストケースは全部通さないと駄目だよ
内部動作をリファクタリングする場合はそうだと思います。
> 人間の書くテストが全部網羅してるとも限らないから
> テストの穴を突いた部分が他所で影響してるかもしれない
100%のテストはないけど、十分捕捉率の高いテストと
十分機能変更の余地が低いリファクタリング手法の組み合わせで
実用になるというのがリファクタリングの主張ですよね。
内部動作のリファクタリグだけならそれでいいんですけど、
ただやっぱりインターフェイスの拡張・取捨選択も
やりたくて、そういう場合どうすればいいのかなと。
> 原則としてよほどの事でもない限り一度リリースしたら手をつけないがベスト
一度リリースしたっきりでソースのことを忘れ去っても
大丈夫なプロジェクトならそうかもしれませんが、
リファクタリングがターゲットにするプロジェクトは
リリースした後に(リファクタリングするしないに関わらず)
何度も手を付けてメンテナンスすることが要求されるような
継続性のあるプロジェクトではないでしょうか?
> リファクタリングなんて幻想だからやめなさい
上手くいくと言っている人も多いので、
安易に幻想だと断定もできないように思います。
幻想だとはっきり納得出来たらやめます。
630:627
14/10/07 20:20:02.46 J1sG3mPW.net
>>628
> インタフェースを作り替えたらテストも必要
> というかテストできない・しづらいインタフェースを作ったらあかん
テストしづらくはないのですが、
例えば1つ1つの public メソッドにテストを書いていたら
とても作業が時間内に終わらないというような、
時間がかかってしまう的な問題です。
でも public メソッドはクラスの持つインターフェイスだから
テストは必要ってことですか?
631:デフォルトの名無しさん
14/10/08 15:43:43.04 AP5j0Y8f.net
ただ、そのテストのメンテナンス、テストを減らしたり、改善したり、
そういう話はまだ多くないんですね。(例えば)テストが増えてくると、
全部のテスト通すのに 3 時間かかったりとか、 テストの量自体が問題になってくる。
またテストが実装に深く依存してて、リファクタリングしたらテストが
ばーっと真っ赤*49になっちゃうからやめようみたいな話とか。
テストをたくさん書けば良いってものじゃないんですよ。
設計の改善を前後で担保するためのテストだったはずなのに、
設計改善の邪魔をしてるんじゃないか? と。
テストが変更のコストを一定にするという夢を俺たちは見てやってきたのに、
テストが増えると変更コストが上がっていないかい? という問題に対してどう戦うか、
それが今の TDD の主戦場だと思っています。
URLリンク(www.ogis-ri.co.jp)
632:デフォルトの名無しさん
14/10/08 17:47:03.08 No3WRPQd.net
>>631
下手なテストを書くとそうなるって話ですね。
633:デフォルトの名無しさん
14/10/08 23:56:17.82 UFd7lKdk.net
よくわからんが何かの言い訳に使えそうな
634:デフォルトの名無しさん
14/10/09 10:21:37.01 IFg54I5e.net
テストできない・しづらいインタフェースを作ったらあかん
635:デフォルトの名無しさん
14/10/09 20:44:29.80 zf/NUEdS.net
ボタン一個一発こそ至高
636:デフォルトの名無しさん
14/10/12 07:13:20.02 jwvcB2bY.net
>>626
有能な人材だけで構成されているなら可能
でも有能な人材はそもそもそんなコードを書かない
つまり、現実では実現不能ということ。
よく考えてよ。
ゲーム会社への就職も面接すらいけずに終わり、他の会社も全滅、登録派遣しかなく
ようやく派遣されたCOBOLでクビになり、
自分は有能だと思い込んでいるケドWindowsしか使えない
無職の人の立てたスレだよ?
637:デフォルトの名無しさん
14/10/12 13:23:31.01 08qsWg0a.net
>>636
返信ありがとうございます
> よく考えてよ。
誰が立てたかでなく、何を言っているかで判断しています
> 有能な人材だけで構成されているなら可能
627 では可能かどうかという聞き方はしていないのですが、
627 のどの部分を指して可能と言われているのでしょうか?
> でも有能な人材はそもそもそんなコードを書かない
これも、627 ではどんなコードかに関して言及していないと
思うのですが、そんなコードというのは何を指しているのでしょうか?
638:デフォルトの名無しさん
14/10/12 14:51:47.69 jjrAIsW+.net
世の中に汚いコードが溢れてるってことだなw
リファクタリングは汚いコードを直すことじゃないよ。
コードは修正するたびに(≒機能追加)
どんどんコードが増えていく。
素人集団は、コードの既存部分を直さずに追加するだけで終わらせる。
有能な人材はそもそも汚いコードを書かないというが、
それは、有能な人材は、リファクタリングをしながら機能追加していくから
汚いコードに"成長しない" ということを意味する。
639:デフォルトの名無しさん
14/10/12 15:32:46.02 08qsWg0a.net
設計がまずかったり場当たり的に組んでしまったりして
いったん汚いコードになってしまったらもう手遅れですか?
汚いコードをインターフェイスを変えつつ
改善していきたいと思っているのですが
640:デフォルトの名無しさん
14/10/12 16:01:06.81 jjrAIsW+.net
>>648
「汚いコード」のうちは未完成と考えるよ。
設計書だってレポートだって小説だって
書いた最初は下書きでそれから清書するもんだろ?
641:デフォルトの名無しさん
14/10/13 12:31:48.66 dRUWRUgv.net
コードが汚いとか騒ぐやつは総じて低スキル
642:デフォルトの名無しさん
14/10/13 17:48:27.91 qVWnI3+v.net
>>639
汚いのを綺麗にする行為をリファクタリングとは"呼ばない"
これが原理主義者の主張するところである
643:デフォルトの名無しさん
14/10/13 21:27:10.38 mV3fqIh9.net
>>642
ではリファクタリグしたとしても汚いコードは汚いままなのですね
644:デフォルトの名無しさん
14/10/13 22:25:07.42 0J6BIdC+.net
>>643
汚いコードはリファクタリング前に綺麗にしてから
リファクタリングするから、
リファクタリング後は当然綺麗になってるよ。
645:デフォルトの名無しさん
14/10/13 22:41:00.86 mV3fqIh9.net
>>644
リファクタリグとは別に、汚いコードを綺麗にする方法があるのですね
どうやるんでしょう?
646:デフォルトの名無しさん
14/10/13 22:43:13.35 zulUt3IX.net
>>645
まず何が綺麗で何が汚いかを勉強することだね。
それを知らないことにはどうしようもない。
逆に知ってしまえば、具体的な質問ができるようになるよ
汚い××というコードを、綺麗な○○に変化させるには
どうしたらいいでしょうか?って
そういう質問なら答えがちゃんと言える。
君の今のレベルの質問は曖昧すぎて答えがない。
647:デフォルトの名無しさん
14/11/22 11:07:28.63 jhiCG8Ku.net
>>641
その高スキルに限って自分のソースが保守できずに早々に放棄する
書きなぐり続けるのはその繰り返しのため
648:デフォルトの名無しさん
14/11/22 16:04:31.14 6qlI/h48.net
>>641
俺様のコードは凡人には分からない
協調作業が出来ないタイプの典型
困ります、俺のプロジェクトから即刻リジェクト
してほしいです
田中お前だよ
649:デフォルトの名無しさん
14/11/25 12:34:50.30 aVHf4ing.net
世の中なんでも使い捨てで楽な方に向かってるのに
プログラミングの世界は古いものを大事に使いたがる不思議
怠惰なフログラマこそ率先してコードを使い捨てにすべきじゃね?
650:デフォルトの名無しさん
14/11/25 23:55:42.35 n1duvf0w.net
>>649
使い捨てる理由の大半はどんなにうまく保存しようとしても劣化し続けるから。
ソフトウェアはそういう物理的制約から書いたものはずっと同じまま残り続ける。
うまくバックアップや環境が残りさえすれば半永久的に使い続けることが出来る
わけだから、怠惰であればあるほどそういう資産を積み上げていくんだよ。
651:デフォルトの名無しさん
14/11/26 12:34:55.88 1UftDcOY.net
>>650
バカだな劣化するからリファクタリングとかいう下らない事が流行るんだぞ
652:デフォルトの名無しさん
14/11/26 19:48:43.25 0BkZoqqN.net
再利用って考え方がそもそもコストが高いんだよ
もんじゅとか例に挙げなくてもリサイクルって金掛かるだけで
利権で儲けるしかない仕組みだって判るよね
653:デフォルトの名無しさん
14/11/27 00:55:26.29 dibuY+0s.net
再利用のコストに関しては単純に何回再利用するかで変わってくるから、
コストの高い再利用をしているお前が悪いんじゃないのとしか言えない。
リファクタリングも同じで、2度と手を入れないような部分や新規プロジェクトを
渡り歩くような人には不要なもの。 ただ昨今のアジャイル開発とか呼ばれている
ものだと、ある程度の期間は修正や追加が必要になってくる。 無計画に接ぎ木を
してわけの分からないキメラを作るより、ある程度剪定して理解できる範疇に
修める必要があるよねっていうのがリファクタリング。
654:デフォルトの名無しさん
14/11/27 12:34:12.35 jH/Xs+Kz.net
>>653
ソフトウェアの再利用もその都度コストがかかるんだが?
普通は回数に比例してコストが増加するぞ
655:デフォルトの名無しさん
14/11/27 12:41:38.96 r+bsdp9/.net
>>654
> ソフトウェアの再利用もその都度コストがかかるんだが?
> 普通は回数に比例してコストが増加するぞ
再利用するために何らかの変更が必要なら、そのときだけコストがかかるが、
以降はコストかからんだろ。
656:デフォルトの名無しさん
14/11/27 23:29:56.27 kUiumU8R.net
再利用前提で作ろうとしてる時点で余計なコトスがかかっとるわい
657:デフォルトの名無しさん
14/11/28 02:38:41.57 LrjKc3Ws.net
古くなった原発の再利用
658:デフォルトの名無しさん
14/11/28 04:18:59.87 MN0ISYZx.net
再利用性や拡張性というのは、将来のことだから仕様外。
仕様外だからプログラミングの対象外。
おわり。
659:デフォルトの名無しさん
14/11/28 07:48:17.97 IEXuWLi+.net
再利用と考えるからいけない。
モジュール化。
適切なモジュール化は、再利用出来るだけじゃなく、
複雑度も減ってバグも少なくなる。
適切なモジュール化が出来ない奴が
再利用にコストがかかるとか
コードが再利用できないとか言う。
660:デフォルトの名無しさん
14/11/28 12:44:59.78 X4M4SbHd.net
>>659
それは再利用じゃないよ
機能を小さく保つ事で、本来の目的である一次利用出来る範囲が広がるだけだ
それを便宜的に「再利用しやすい」などと表現してる訳だ
ソフトウェア本来の目的とは異なる本当の意味での再利用にはコストがかかるんだよ
661:デフォルトの名無しさん
14/11/28 17:41:36.95 03S1h8mH.net
本当の意味での再利用?
そんなもんに興味持つ必要はなさそうだが?
>>659
それな。
本当にそれ。
662:デフォルトの名無しさん
14/11/29 01:59:23.82 TbFyYdBX.net
>>660
> 機能を小さく保つ事で、本来の目的である一次利用出来る範囲が広がるだけだ
一次利用が出来る範囲が広がる=再利用だろw
663:デフォルトの名無しさん
14/11/29 13:13:20.77 U5ivpV2C.net
再利用じゃなくて流用と言えばいいのに
664:デフォルトの名無しさん
14/11/29 14:17:24.97 v2v5Wnkr.net
全く修正しないで使うのが再利用。
コピーして修正して使うのが流用
流用をすると、AとA'というコードが生まれなんで二つに分かれてるの?
違いはなんんあの?と結局両方を読まないといけなくなる。
流用するたびに読むべきコードがどんどん増えていく。
はてに一つを修正するともう片方の修正を忘れるとか。
なので全く修正しないで使う「再利用」でないと意味が無い。
全く修正しないで使えるのだからコピーする必要はなくなる
665:デフォルトの名無しさん
14/11/29 14:46:23.56 A4nuaoXO.net
流用元から流用先がどこにどれだけあるかは基本的に分からない。
流用元に何かバグがあって修正する必要があった場合に論理的に考えると
流用先も直しておいた方がいいor直す必要がある。 ただ流用先を全て特定
することは難しく、特に流用先で動くように変数名とか変えてあると確実に
漏れる。バグじゃなくても何か修正追加したいと思った時の事を考えると
コピペをばらまくより関数で再利用するほうがいいよねってなる。
ただ人間は欲深いもので1つの関数にあれもこれも詰め込んで破綻させる
奴が出てきたりする。こういうのを見て、関数なんて作らなくてコピペでいい
だろって奴が出てきて無限ループする。
666:デフォルトの名無しさん
14/11/29 22:16:12.25 UEas1JmU.net
頑張って同じ機能がすでにあるか探して、
あったらあまりいいコードじゃなくても正しく仕様を満たすからそれ使って
散々気をつけてんのに誰かが変更しやがる
667:デフォルトの名無しさん
14/11/30 12:24:33.02 NxMP0P1A.net
リファクタリングと言う名の正義
668:デフォルトの名無しさん
14/12/05 19:01:54.53 cszTTiF/.net
>>667
同意、正義を振りかざす曲者
669:デフォルトの名無しさん
14/12/21 11:54:37.04 LOCxTeYe.net
>>660,660
>ソフトウェア本来の目的とは異なる本当の意味での再利用にはコストがかかるんだよ
アプリ内でのモジュールの共通化(=アプリに特化したフレームワーク、ライブラリ
の抽出)と、どんなプロジェクトでも使えるようにフレームワークやライブラリーを
汎用化するのは似て非なるものだと思う。
670:デフォルトの名無しさん
15/02/15 22:12:39.01 wyXhgSeE.net
>>1-1000
テスト
671:デフォルトの名無しさん
16/03/27 21:55:32.43 N7IGtcj3.net
どのタイミングでやったら工数に影響を与えずにできるの?