リファクタリングすると全部テストしろと言ってくる奴の矛盾2
■ このスレッドは過去ログ倉庫に格納されています
機能追加や変更した時に、全部テストしてるでしょ?
いつもやってることじゃん
前スレ
リファクタリングすると全部テストしろと言ってくるやつの矛盾
https://medaka.5ch.net/test/read.cgi/prog/1523765624/ >>713
え?だってあなたの定義だと既存の機能に全く手を付けなくても
機能追加中も壊れますよね?
ソースコードコンパイルできなくなるんだから >>714
機能追加中はエンハンスだから壊してる状態
文法エラーでコンパイルできないならそれ以前の問題 ソースコードの修正途中に一時的に動かなくなることを壊すと言ってるのなら、
それをリリースするわけでもないので大したことじゃないから
心配する必要はなにもないってことになるのでいいんですよ。 (自動化された)テストが重要なのは、壊れてないことを保証するためですからね
一時的に壊れてもコミット時に壊れてなければ問題ないので
リファクタリング(動きを変えない)の場合はテストを変える必要もないので、
機能追加と違って、安心して変更ができるわけなんですね。 揚げ足取りしかできなくて自分の意見が表明できないなんて悲しいな リファクタに耐えるようなうまいユニットテストつくれん
設定項目が膨大すぎてIF変更やDBの取得先変更で
あっさりで投げ捨てられる
F痛でDBの更新項目とか結果全部テストしてたからそういうふうにしてたが
世間の常識とちがうらしい ゼネコン案件だったらほとんどがコーディングスキルゼロの素人が設計したスマートUI乱用システムだろ
そのようなシステムではそもそもユニットテストは作れないのが普通なんだ
無理してユニットテストを作るんじゃなくて設計か要件定義までロールバックしたほうがいい >>668
動きは変えない。
変わっていないことを証明せよ。 このリファクタ馬鹿って、結婚障害だとか書いてる馬鹿と同一人物なんだろ
ほっとけよ >>627
毎回リファクタリングが必要とか、
無能すぎてもう何やってるか理解できてないんだな。 業務システムだと簡単すぎて時間が余る
暇を弄ぶのも苦痛なのでテストを整備してリファクタリングする
これぐらいでいいんだよ
無理してやるもんでもないし頑なに拒否するもんでもない うちのメンツだとリファクタはまずないわ
なにせ綺麗だもん常に うちは正規職員しかいないから
正規職員も全員偏差値70は最低でもある
だからソースも無駄がないのさ
馬鹿な派遣だらけの職場は大変ですね >>727
ビジネスが進歩とか、
お前の辞書()には面白い単語が載ってるんだな。
つか、表面に見えてるビジネスに依存したソース書くのは素人丸出し。
まともに設計できる技術者なら、リファクタリングなんて無駄な事は発生させない。 >>731
言語やフレームワークの進化も無視ですかそうですか >>1って、自分以外誰も支持してくれない現実どう受け止めてんの?w
ああキチガイだから受け止めないかw >>732
そうそう
お気づきの変化が起きた頃にはリプレイスです
リファクタ不要だろ?w 客「仕様変更をお願いしたいですが」
お前「リプレイスですね」
客「ちょっと仕様変更だけなんですが」
お前「無理です。変えられません。リプレイスしたほうが安いです」
客「来月さらに同じところの仕様変更を考えてるのですが」
お前「またリプレイスでしょうねーwww」 >>731
まあそこが君んとこの限界なんだろうね
業務ルールや要望が変化するたびに秘伝のタレを付け足していけばいいさ リファクタせずに機能追加しまくって
限界が来たらリプレース
理にかなっている ・客先にて
客「広島から大阪を経由して東京へ行く仕様を、京都経由に変更してくれ」
上司「了解しました」
・社内にて
上司「大阪と京都は近くだから簡単だろう?すぐに修正してくれ」
お前「現状、広島から北海道を経由して福岡を経由して新潟を経由して京都を経由して東京に行くようになってますから
京都からさらに大阪を経由して東京に行くんですね」
上司「は? 広島から京都を経由して東京にいくだけだろ。なんでそんなに遠回りしてるんだ?」
お前「動いているコードに手はださない。既存のルートに付け足すだけだ。今までずっとそうしてきた」
上司「それだとムダでわかりづいらいだろ。リファクタリングしろ」
お前「コードぐっちゃぐちゃやねん。手遅れだ。リプレイスしたほうが早い」
上司「なぜこまめにリファクタリングしなかったんだ?」
お前「リプレイスしたほうが早いからだ」
上司「手遅れにならないうちに! こ・ま・めに!」
お前「知るか、リファクタリングなんか不要!」 ・客先にて
上司「この間の仕様変更の作業中に、遅かった理由が判明しました。
広島から大阪を経由して東京に行く仕様ですが、
広島から北海道を経由して福岡を経由して新潟を経由して大阪を経由して東京に行っていました」
客(絶句)
上司「担当者は今回の仕様で、上記に追加して大阪からさらに京都を経由しようとしていましたので、
ご安心ください。クビにしました」 コードを書くのは下流だけど下流に行くほどリファクタリングに無頓着
派遣さんはコードを書かせたらサヨナラバイバイだから
彼らには後の事を考えてコーディングする機会がないのだろうね
そうなるとリファクタリングという発想自体が出てこなくなるのも仕方がない >>738
正解
その頃にはシステム担当者が変わってるから、引き継ぎを兼ねて新しく作るのが吉 新人「大阪経由を京都経由に変更するんですね!(簡単そうだ)任せてください!」
上司「ちなみに納期はこれこれだから」
新人「まあ、変更少なそうだし、大丈夫でしょう」
新人(コード見て絶句)
新人「え!!その期間でその修正を!?」
新人(無理や・・・大阪からさらに京都へ経由する処理を追加するしかない)
上司「おい、なんで。広島から北海道を経由して福岡を経由して新潟を経由して京都を経由して大阪を経由して東京に行ってるんだ?」
新人「知らねーよ。既存のコードがそうなってたんだから真似しただけだ」(暗黒面落ち) >>742
新しく作るには、ぐっちゃぐちゃのコードを解析しないといけないんやで? リプレースって既存システムの仕様解析を諦めてベタ移植するフラグが最初からたってる
汚いレガシーシステムを違う基盤上の汚いレガシーシステムに置き換えるだけに終わる
莫大なコストがかかるくせにビジネス上のメリットは殆どゼロ >>738
> リファクタせずに機能追加しまくって
> 限界が来たらリプレース
> 理にかなっている
限界が来る前の修正でリファクタリングしない理由がわからん 既存システムがめちゃくちゃで仕様解析は無理だ
↓
解析は諦める
行単位で移せば機能を維持したまま移植できるはず
↓
言語やライブラリの仕様の違いのせいでバグが多発
残業しまくって火消しするしかない
↓
なんとか移植完了
バグ数が多いので客は品質に強い懸念を抱いているがテストは通した
たとえスカスカでもテストは通したんだから大丈夫なはずだ
↓
経営陣に土下座させて客への説得もなんとかクリアして受け入れも済んだ
さあ本来の目的だった機能を追加するぞ
↓
コードがめちゃくちゃでどうやったら機能を追加できるかわからないよ
リプレースって毎回こんななるんだけど
リプレースがうまくいくことなんてあるの? リプレースついでに新しくしましょうとかやるからだろ
リプレースは古いものを使うのが鉄則
そんで限界が来るまで使って
限界が来たら、リプレースをする リファクタリングしてリプレースに耐えうるコードに書き換えてからリプレースするとうまくいくのだけど
コストをケチってリファクタリングが省略されて失敗する リプレースって仕様書みて一から全部再実装するんだぞ
そのために仕様書があるわけで、
完璧な仕様書が求められてる >>743
フレームワークが少し変わるとリプレイスとか頭おかしいよね >>739
まさにお前のいうようにするわ
いままで北海道で下車できてたのにできなくなったら大デグレードじゃん
それリファクタじゃない
クビになるのは間違いなくお前のほう
多少遅いぐらいなんだってんだ
通常の現実世界とプログラムの世界の違いを知れよ
どうせ1秒2秒だろ?またせとけよ >>754
> いままで北海道で下車できてたのにできなくなったら大デグレードじゃん
勝手に仕様を追加するな > 通常の現実世界とプログラムの世界の違いを知れよ
> どうせ1秒2秒だろ?またせとけよ
実行時間の問題じゃないのよ。解析にかかる時間が問題なの
別の担当者が作業した時、なんでこんなことをしているのかわからないコードを
自信を持って完成しましたと言えないことが問題なの
何をやってるか知りませんが、動くからバグはないんじゃない?
テストに漏れがないと良いですね。
こんな無責任なこと言えないの 仕様変更で既存のコードに付け足してつじつま合わせのようなことをしてるなら
テストも同じように付け足してつじつまを合わせをすることになる
必要のないテストをするだけじゃなくテスト自体の自信もなくなる。
こんなテストしてますが、このテストは正しいのですか?
必要なさそうなテストですが、前の人がやっていたので繰り返しやります
時間かかりますね。 >>748
リプレースの目的と、今後必要な機能を整理して、
現状よりも効率の良い新システムとして提案するのが正解。 >>758
例えばCOBOLのバージョンを毎日確認したりしないよね
いつの間にか「あれ?バージョンが上がってる?」ってなる
数年スパンで起きる現象なんだから
お気づきの変化が起きた頃には(数年たっていて)リプレイスです。 >>755
理由もなくそんなことになるもんか
変えたら何がおこるかわからん >>759
> リプレースの目的
リファクタリングしてなかったので
想定よりずっと早くコードの寿命が来てしまった
仕方がないのでリプレースで対応します >>761
意味がわからん。
> 客「広島から大阪を経由して東京へ行く仕様を、京都経由に変更してくれ」
どこにも北海道で下車したいなんて書いてない リファクタをリプレースと呼べば多少動きが変わっても許してもらえるという願望 >>755
自分が知らない仕様を他人のせいにするなよ。。。
こういう馬鹿が「聞いてない」「勝手に仕様が追加された」とか言い出すんだよな。
利用者にとって当たり前の仕様くらい把握する力を持てよ? >>762
コードの寿命。。。?
お前の書いたコードは経年劣化するのか? >>763
客も開発者もすべての仕様を常に把握してるわけじゃないからな
どっかでだれか急に悲鳴上げて大混乱になる >>765
だから意味がわからん。
> 客「広島から大阪を経由して東京へ行く仕様を、京都経由に変更してくれ」
どこにも北海道で下車したいなんて書いてない
仕様に書いてない挙動も、動作保証してるのかな?w >>767
つまり「仕様変更は認められません」ですかな?w 客「仕様を変更し欲しい。どれくらいかかりますか?」
お前「仕様変更は認められん。こういう使い方してるかもしれないだろ」
客「いやそういう使い方してないから」
お前「お前が決めるな。客は神様ではない。」
客「お前の所に開発頼むのやめるわ」 >>769
仕様変更の依頼があったら大手を振って変えられるし
多少デグレしても言い訳は立つ
ちょっと大阪を京都にするだけだろ?そこだけ対応するよ? >>759
増改築繰り返したシステムではその必要な機能を解析することがほぼ不可能 客が求めてないのに、一旦リリースした以上
混乱を招くかもしれないからって仕様変更を拒否するとかイミフ >>768
そんなことすら理解できないから、
お前は素人だと言ってるんだよ。
現状それで運用されてるんだろ?
なんでわざわざ北海道経由してるのを
「お前の判断でやめてもいい」んだ?
それは最早リファクタリングでもなんでも無い。
ただのバグ追加だ。 >>771
> ちょっと大阪を京都にするだけだろ?そこだけ対応するよ?
大阪で下車するかもしれないだろ?
というような(意味不明な)話だったはずですが? >>774
> 現状それで運用されてるんだろ?
> なんでわざわざ北海道経由してるのを
> 「お前の判断でやめてもいい」んだ?
↓どうみても客の判断なんだが? 何を言ってるんだこいつ。
> 客「広島から大阪を経由して東京へ行く仕様を、京都経由に変更してくれ」 >>775
なんか気づけば指摘してやるが
そこは客が言い出したんだから間違いがあったら客のせいにできる >>777
つまり
> いままで北海道で下車できてたのにできなくなったら大デグレードじゃん
っていうのは間違いってことね >>778
そりゃ客が北海道で下車したいって今まで言ってないなら
そんなことに対応する必要はありませんね ・客先にて
客「広島から大阪を経由して東京へ行く仕様を、京都経由に変更してくれ」
上司「了解しました」
・社内にて
上司「大阪と京都は近くだから簡単だろう?すぐに修正してくれ」
お前「現状、広島から北海道を経由して福岡を経由して新潟を経由して京都を経由して東京に行くようになってますから
京都からさらに大阪を経由して東京に行くんですね」
上司「は? 広島から京都を経由して東京にいくだけだろ。なんでそんなに遠回りしてるんだ?」
お前「動いているコードに手はださない。既存のルートに付け足すだけだ。今までずっとそうしてきた」
上司「それだとムダでわかりづいらいだろ。リファクタリングしろ」
お前「コードぐっちゃぐちゃやねん。手遅れだ。リプレイスしたほうが早い」
上司「なぜこまめにリファクタリングしなかったんだ?」
お前「リプレイスしたほうが早いからだ」
上司「手遅れにならないうちに! こ・ま・めに!」
お前「知るか、リファクタリングなんか不要!」 続き
・客先にて
上司「この間の仕様変更の作業中に、遅かった理由が判明しました。
広島から大阪を経由して東京に行く仕様ですが、
広島から北海道を経由して福岡を経由して新潟を経由して大阪を経由して東京に行っていました」
客「今までの経由の変更はすべてそんなことをしていたと?頼んでないんだけど?」(絶句)
上司「担当者は今回の仕様で、上記に追加して大阪からさらに京都を経由しようとしていましたので、
ご安心ください。クビにしました」 おまえぐらい同じこと何回もコピペするのが好きなら
リファクタしたくなるのもわからんでもない >>783
読まないで途中参加するやつがいるから
これ結構効果あるんだよ。 一見仕様にないように見えても
イクラ弁当がたべたいとか言い出すやつがいたりして
そこで仕様がねじくれてる可能性もある
ぜんぜん関係ないはずなのに勝手に機能削除してそこでデグレたらだいぶやばい まず経路をデータとして扱うように改修して
既存の経路と同じ結果になるデータを投入してテスト
新しい経路のデータを投入
リファクタリングしてよかったな
しなければ経路を増やすたびにバカバカしい議論、コード分析、コード改修、ビルド、テスト、納品、客先説明をしなければならないところだった
とんでもないコストだよ >>785
何度も言わせるな
なんか気づけば指摘してやるが
そこは客が言い出したんだから間違いがあったら客のせいにできる 客の仕様自体が間違ってた時な
べつにそこだけ変えりゃ今まで通り達成できるのに
全然関係ないとこでデグレてあんたが言ったからだって通んないでしょ >>760
日本語がおかしいって指摘だろ
そしてCOBOLかよwww >>788
そこは客が言い出したんだから間違いがあったら客のせいにできる 言い出した部分自体の仕様バグだったらね
これは関係ないとこの機能削除しようってんだからだめだろ
どっちにせよ現実に対しては何の解決にもならんが そりゃリファクタリングしないほうが良いとか誰も支持せんわw >>792
やっぱり現実的に解決できるのは
リファクタリングしかないのかな
仕様変更で無駄になったコードは削除しないといけないね 今回の例↓みたいに
> 客「広島から大阪を経由して東京へ行く仕様を、京都経由に変更してくれ」
広島 → 大阪 → 東京 を
広島 → 京都 → 東京 に変更する場合
既存の処理(大阪に行く)を残して
広島 → 大阪 → 京都 → 東京 に変更する方法もある
だがそれは客は望んでいない
で、忘れてはいけないのはコレは ”リファクタリングではない" ということ
仕様変更なんだから当然リファクタリングではない
じゃあこの話のどこにリファクタリングが絡んでくるのかと言うと
(手っ取り早いという理由で)広島 → 大阪 → 京都 → 東京 と書いた後
(客の要望通り無駄な)大阪 を経由する処理を省くこと
広島 → 大阪 → 京都 → 東京 を
広島 → 京都 → 東京 にすることがリファクタリング
ここまでやって、完成と言えるのだが
こまったちゃんは動いたからOKでしょで、完成にしてしまうから
それが積み重なって、(客が要求してない)こんなクソコードになる
広島 → 北海道 → 福岡 → 新潟 → 大阪 → 京都 → 東京 仕様変更のたびに、こうやって無駄になってしまったコードを
削除することもリファクタリングの一つなんだよ >>795
その要望で、その直し方する且つそんな直しになるプログラムを組むバカがいるとこで働いてないので 俺はそんなところで目隠しされた状態で働いてる
へたに動いて事故れない >>776
だからお前はど素人なんだよ。
「現状のルートは京都を経由していない」
という可能性に気付け。
勝手に仕様を自分の中だけで完結するな。
相手の意図を正しく判断して、今のシステムと比較して確認しろ。
お前のいうとおりなら、そもそも京都を経由してるんだから
要望じたいが発生しない。 >>803
お前一人でずれたこと言ってるぞ
もう少し落ちつて書いてある要望を見ろ
それが全てなんだから >>786
いちばんヤバいやつ
データ化すると仕様変更にいちじるしく弱くなる
それこそ最初から設計されてなきゃ
なりゆきで変えちゃったらどつぼにはまるパターン
そしてどのみち駅ごとに別のことやるからテスト工数削減できないという
そのうえプログラムだとIF文ですんだところがデシジョンテーブルなんか使ったら
ちょっとしたきっかけで組み合わせ爆発、そのすべてをテストせざるを得なくなる 客や上司が意地悪だとこっちの様子やプログラム見てわざと困るような要求してきたりするしな!
世界が敵に見えてる人間のやることではない リファクタリング禁止とか言ってるやつが書いた(クソ)コード見てみたいよなー
でもクソコード書くようなやつは公開しないだろうなー
ってことでなんかないか探すスレ立ててみた
【反面教師】 オプソで汚いソースコードを見てみる
https://mevius.5ch.net/test/read.cgi/tech/1540137601/ >>805
> そしてどのみち駅ごとに別のことやるからテスト工数削減できないという
駅の話なんて一言も言ってないよ >>805
何言ってんだ?
ハードコードされてる方が変更に弱い
経路という明らかにデータで表現すべきものを手続きで実装するなんておかしいよ
そうやっておかしなことをやるから「既存の経路をコピペして付け足しましたー」などと無茶をする奴が現れる
データだったら「新規経路登録しました」で済む話だ
プログラムの変更がないからテストも最小限で済む
客への説明もこれ以上ないほど簡単だ ■ このスレッドは過去ログ倉庫に格納されています