リファクタリングを非技術者にどのように説明しますか?


52

リファクタリング(および技術的負債)を非技術者(通常はPHBまたは顧客)にどのように説明しますか?(「なんと、目に見える違いなくあなたの仕事に1か月かかるでしょうか!」)

更新これまでのすべての回答に感謝します。このリストは、適切な人を指すことができるいくつかの有用な類推を提供すると思います(PHBへの参照を編集するのは賢明かもしれません!)


Appleがどのように多くの人々をLeopardからSnow Leopardに変えるように説得したか覚えていない。おそらく価格:当時の通常より100ドル安い。
ムーヴィシエル

この質問は、産業界でコードを扱う人にとって驚くほど有用な回答をもたらす可能性があります。人々に注意を払ってください。
joshin4colours

なぜ賢明なのでしょうか?
ルイスリース

回答:


53

大きなホームシアターがあり、物を追加すると、ゆっくりですが確実に後ろに大きなネズミが巣を作ります。

部品を頻繁に交換する場合は、そのすべてを整理する価値があります。

確かに、それを行うと、以前は機能していましたが、開始時よりもうまく機能することはありませんが、もう一度それをいじる必要がある場合、事態はずっと簡単になります。

いずれにせよ、PHBまたは顧客がすでによく知っている特定の分野、つまり車や建設などと同様の比較を行うのがおそらく最善です...


1
劇場を継続的に建設することの直接的な結果として現れる悪いものとは対照的に、悪いものが自発的に劇場にtheaterい込むように聞こえるので、最高のアナロジーではありません。
-doppelgreener

21
@Axidos:「ネズミの巣」は英語のイディオムで、「もつれを元に戻すことは一見不可能だ」(この場合、エンターテイメントセンターの後ろのコードとケーブル)
-HedgeMage

8
概念的にはかなり良い-「ネズミの巣」の後の「ケーブルの」ニーズ
マーフ

2
@ピーター:少なくとも一度はテレビの後ろに行かなければならなかったと思う。それを100倍悪いものとして説明し、どこでもケーブルの糸を紡いでこれを引っ張り、それを引っ張って混乱のどこかに死んだ文明を発見してください。
ドッペルグリーン

3
関係がない場合は、次のように見せてください:google.com/images
Steve S

41

リファクタリングは、すべてがきちんと収まるまでスーツケースを再梱包するプロセスに似ています。時々、その過程で、そもそもなぜそんなにジャンクになろうとしているのか疑問に思うでしょう。


1
ガレージや小屋との類似点を投稿するつもりでしたが、これはより良い方法です。
マットエレン

または、いくつかのスーツケースを購入して、太りすぎの料金を支払うことは大した問題ではないことに気付くことがあります。ソフトウェアのコストは物理的な世界のコストと同じではないからです。そうすれば、すべてをうまくフィットさせることができ、1つのスーツケースの制約はarbitrary意的で不合理であることが判明しました。
ダンローゼンスターク

+1これは素晴らしい。物事をより少ないスペースで占有することに加えて、あなたが全く必要とさえしなかったので、省くことができると気づくものがあります。
ロビーディー

21

技術的な負債の概念については説明しませんが、それは必要ではないからです。代わりに、リファクタリングに焦点を合わせます。プログラムの設計を変更します。必ずしも「改善」または「改善」する必要はありません。変更する必要があるため、変更する必要があります。

車のアナロジーが当てはまる場合があります。車にエアコンを追加する必要がありますが、もともと車用に設計されたものではありませんでした。奇妙なL字型のエアコンを作る必要があるだけでなく、最初に邪魔にならないように他のものを移動して、排気システムを変更する必要もあります。

また、新しい機能に対応している場合、リファクタリングする方が良い戦略だと考えています。


車の部品を移動してパフォーマンスを向上させたり、メンテナンスを容易にしたりすることは、車のふたを持ち上げた人には有効ですが、PHBは何人行っていますか?
ピーターボートン

3
これは、必要な変更を簡単に(または可能に)するためにリファクタリングが行われていることを強調しているため、これが気に入っています。通常、リファクタリングはそれ自体のために行われるのではなく、特定の目標を達成するために行われるべきです。
クリストファージョンソン

したがって、簡単な答えは次のようになります。新しい機能に時間を考慮して、それに応じてリファクタリングします。
ジョナサン

12

私は技術的負債という用語を使用し、彼らが理解する何か-法人負債に直接関連付けます。技術的負債はローンを借りるようなものです。あなたはそれに興味を持っています。たとえば、新しい工場を建設してその費用を完全に支払うか、融資を受けることができます。ローンを取得した場合、実際には長期的にはより多くを支払うことになりますが、条件が正しい場合は財政的に意味があります

ただし、このようなローンの25%の利息を支払う場合は、持続不可能な立場になります。これは技術的な負債でも同じです。技術的な負債を負うことが理にかなっている場合があります。ただし、関心が高すぎて、返済する必要がある点があります。いくつかの技術的負債は住宅ローンのようなものであり、いくつかはクレジットカードの負債のようなものです。緊急事態では、クレジットカードの借金は重要で貴重な資産です。ただし、賢明に使用しないと、銀行(または選択した場合は家庭)を破壊する可能性もあります。

もう1つの例:マーケティングメールのドロップに10,000ドルを支払って、将来の販売でより多くのリードを獲得できます。あなたは「販売負債」を完済しています。これは長期的な見返りを伴う費用です。これを、コードの一部をリファクタリングするお金を「支出」したい理由と同等にしてください。どちらの場合も、すぐに見返りはありませんが、将来のパフォーマンスを向上させるための準備をしていることになります。

私は、ターゲットオーディエンスが誰とでも話すとき、「xxxx負債」という用語を類推として使用する傾向があります。たとえば、運用負債-現在の印刷機は正常に機能していますが、生産を1日(または1週間)停止し、新しいマシンにアップグレードすることで、出力を25%増やすことができます。

EDIT - ここでは、この上の別テイクがあります


1
現実的な経済性を実証する正当な理由のある返信に対して+1。借金は時には合理的であり、純粋主義者はそれを容認できない場合、あまりにも多くの機会を逃します。
マクニール

1
そして人々は、古いローンの利息を支払うためにローンを借りることは持続可能ではないことを理解しています。
クリストファー

1
この私がすべてを廃棄し、書き換えを参照して好きなので、説明のための私の好みであるとして、(多くの場合、唯一のオプションはあまり技術的負債をのために残されている)技術的な破産
ウェイン・モリーナ

4
これはひどい答えです。(1)これは、リファクタリングの技術的な説明よりも複雑です。(2)これは、リファクタリングの「理由」を説明していません。リファクタリングの「いつ」(つまり、いつ費用対効果が高いか)を説明します。または、この投稿を本当に理解していないのかもしれません。したがって、ポイント(1)です。
トーマスエディング

2
@ThomasEding(1)これはリファクタリングの説明ではなく、技術的負債の説明です。(2)これは、いつリファクタリングするのかという理由をビジネスパーソンに説明しています。正直なところ、彼らは技術的な理由を気にしていません。彼らはあなたが販売を促進する次の機能以外の何かに取り組んでいる正当な理由を望んでいます。これが、ほとんどのプログラマーが上司と話すことができず、上司が愚かだと文句を言うことができない理由です。彼らは愚かではなく、あなたとは異なるドライバーを持っているだけです。
ネミ

8

春の大掃除。

あなたは家に変更を加えていません。あなたはただ物を動かして、いくらかのほこりを取り除きます。たぶん、あなたがもう使わない、あるいはもう必要としないものをいくつか捨てるでしょう。しかし、何も追加していません。


1
+1:これが最良の答えです。「あなたはあなたの家に住んでおり、物事は汚れ/ほこり/汚くなります-定期的に深くきれいにする必要があります。」
スティーブンエバーズ

7

マウストラップをプレイしたことがありますか。新しい機能を追加し、インターフェイスを変更し、バグを修正すると、コードはそのように見え始めます。多くの資本(時間と労力)を費やす必要があります、これはお金に相当します)すべての可動部分が新しい変更または追加のたびにうまく動作することを確認するか、代わりにデザインをリファクタリングする時間を確保して、変更を行うたびに管理する必要のある可動部分を減らします。エンドユーザーの観点からは、リファクタリングには利点はないように思えるかもしれませんが、リファクタリング後に新しい機能が追加されるたびに利益が発生します。プロセスはより速く、バグが少なく、その後は安価です。もちろん、リファクタリングされたコードは全体的により効率的であることは言うまでもありません。

そもそもなぜマウストラップのように見えるようにしたのか疑問に思うかもしれません。

  • すぐに何かを達成するということは、「機能させる」ために優雅さと効率を犠牲にしなければならないことを意味します。
  • プログラマーが頻繁に変化するため、言語機能やその他のテクノロジーを利用できます。時々、新しい機能により、6つの可動部分のごちゃごちゃしたものを1つに置き換えることができます。
  • 多くの場合、機能Cを機能AおよびBに追加するとき、Bが最終的に削除され、Dが追加されることはわかりません。Cを実現する1つの方法は、Bでは非常にうまくいくかもしれませんが、Dではあまりうまくいきません。

より良いマウストラップを構築し続けるために、常に戻って複雑さを軽減し、所有物を合理化する場所を見つける必要があります。多くの機能を備えたソフトウェアを持っていることと、本当に高品質のソフトウェアを持っていることの違いです。」


6

代替テキスト

これは、ホームシアターの例えを少しグラフィカルにしたバージョンです。

もう1つの新しいアプライアンス(別名、新しい機能)を追加したい場合は、ピンチでどこかに収まる可能性があります。

さらに別のアプライアンスを追加する場合は、延長リードを購入できます。

しかし、追加するたびに、解決策を見つけるのが難しくなります。そして、あなたは火災[別名バグ]のリスク1に身をさらしています、そしてあなたは壁に新しいソケットを入れるために誰かにお金を払うために大金を引き出す必要があります。回路基板、またはさらに。

1 PHBがあまりうまく機能しないもう1つのこと:「それ起こる可能性がある場合、あなたは何を心配していますか?」


5

リファクタリング-洋服キャビネット/ツール引き出しを整理するようなものです。

  • 服や道具はあちこちにあるからといって捨ててはいけません。

  • あなたは彼らが混乱しないようにすべきだと主張することができます。しかし、彼らはそうします。

コードと同じように。特に時間の経過とともに大きくなります。

そして、あなたがそれをきれいにしないならば、あなたはあなたが愛したそのTシャツまたはあなたがいつも必要とするが決して見つけることができないそのレンチに何が起こったのか疑問に思うでしょう!


4

「コードメンテナンス」と言います。非技術者が精通しており、非技術的な世界観にとって意味のある言葉を使用することが重要です。非技術者(顧客)がアプリケーションメンテナンスに精通している場合、コードメンテナンスとアプリケーションメンテナンスを並行して行うのは簡単です。それらが同じでなくても、ここの最終顧客は開発者であるか、システムを保守する方法であると説明できます。


1
非技術者はアプリケーションのメンテナンスに慣れていますか?私は私の祖母に尋ねました:彼女は私が見つけた最も技術的な人ではありません。さらに:非技術者はコードとアプリケーションの違いを知らないので(「コードがアプリケーションである場合、アプリケーションはコードです」)、類推は機能しません。
マーティン

2
私が働いた場所では、マーケティングとプロジェクトのタイプは「メンテナンス」が「リリース後のバグ修正」を意味すると理解しており、リファクタリングがバグを修正していると主張するのは不誠実です。

私にとって、非技術者は顧客です。お客様は、アプリケーションのメンテナンスが何かを知っている場合、コードのメンテナンスについても理解する必要があります。
アミールRezaei

「コードのメンテナンス」は、コードが摩耗したり使い古されたりするように聞こえます。通常の使用ではコンポーネントにストレスがかかり、液体が使い果たされるなどの理由で、自動車を維持する必要があります。アプリケーションはそのようなものではありません。
ダン・レイ

メンテナンスの例をいくつか挙げます:パフォーマンスの問題。コンポーネント、システム全体、またはアプリケーションはVBで記述されており、Microsoftはサポートを停止します。OSは、コードの基になっているテクノロジーをサポートしていません。セキュリティ上の問題。これらの問題をメンテナンスしても、エンドユーザーが気付く可能性のある新しい機能は追加されませんが、「アプリケーション」を維持するために重要です。
アミールRezaei

4

あなたは車のカスタマイズに特化したメカニックであり、顧客がそれを必要とする場合はゼロから構築することもできます。いつも彼のスーパーサイズのリムジンに新しい光沢のあるものを入れるためにあなたの店に戻っているこの顧客がいます。

彼が素敵なサウンドシステムをインストールするためにやって来たら。ワイヤを渡して正しく接続するタスクを熱心に実行します。彼は1日後に出かけ、彼は幸せで、いつものように気前よく支払います。

来月彼は戻ってきますが、今回は本格的なホームシアターの設置を望んでいます。もう一度、リムジンを持ち込みます。プロであるため、サウンドシステムを再検討し、車の周りにワイヤを走らせるためのチューブシステムを設置することで、メンテナンスを容易にします。これにより、ワイヤが保護され、引き出しやすくなり、さらに追加する必要がある場合も簡単になります。したがって、古いワイヤを引き抜き、チューブを取り付け、映画館用のサウンドシステムと余分なワイヤを通過させ、すべて閉じて完了です。

顧客が古いサウンドシステムの交換を求めなかったことに気付き、交換部品とチューブのコストの一部を削ぎ落とします。しかし、あなたはまだ取引からお金を稼いでいます。あなたが最初にやったようにシステムを一緒に投げただけではなかったでしょう。

1か月後、彼は戻ってきました。今回は照明システムが必要で、週の初めに古いスピーカーを破損した新しいスピーカーが必要です。

すべてをきちんと整えたので、新しい照明線をチューブにすばやく通し、システムをインストールしてスピーカーを交換できます。しかし、今回ははるかに速く完了し、リファクタリングはゲームのトップを維持することで報われました。

完全に良いワイヤーを引き裂き、この余分なチューブをすべて取り付けたことであなたを笑っていたあなたの競争相手は、顧客を満足させるのにまだ苦労しています。確かに彼はほとんどの場合あなたよりも速く行われましたが、時間がたつにつれて、彼の顧客はますます遅延があり、作業の全体的な品質が低下していると不平を言っています。

これを見ると、ビジネスにとどまるだけでなく、トップガンになるという目標は、顧客の要求を満たすために行うことと、将来の生活を楽にするために行うことのバランスを取ることであることがわかります。顧客が両方の費用を支払うことはほとんどないため、密接に管理する必要があります。あなたは、物事を2回行うというコストでさえ積極的に物事を正しく行うことで、生産性の制御された安定した割合で保守コストを維持することを賭けます。

ソフトウェアは同じですが、プログラマーがデジタルダクトテープを非常に長い時間使用してから、顧客や管理者がその効果を本当に感じることができます。残念ながら、その時までに正しいことをやり直すコストは、ダクトテープがどれだけ存在するか、およびダクトテープの平均寿命に関して指数関数的に増加します。

これが、システムのリファクタリングを続けることが重要な理由です。多くの場合、経験により同じことを行うための新しいより効率的な方法が示されます。または、同じ機能を組み合わせて、それらを単にコピーするのではなく、冗長性を悪用することができます。これは、システムを無駄のない方法で維持する方法です。需要に合わせてシステムを絶えずリファクタリングすることで、メンテナンスの量を制御することで生産性を一定に保つことができます。

ダクトテープを配置すると、生産性が一時的に向上しますが、最適でないシステムを運ぶコストがかかります。システムの他の側面を損なうために即時の生産性が優先される場合は常に、技術的な負債が発生します。借金に例えると、借金に対する利子が利益を奪うのと同じように、借用時間によって物事がすぐに高いメンテナンスを被り、システムの脆弱性が増し、チームが作成ではなく維持に追加のリソースを費やすことになるためです。金融関係者と同様に、借り入れが衰えずに継続する場合、ほとんどのリソースは利息返済に費やされ、改善のためにほとんど残りません。技術的な負債は技術的なリソースを使い果たし、ほとんどのリソースが費やされるだけで、システムが他のすべての可能な機能強化を停止するために粉砕を実行し続けます。

結局のところ、質問は私たちがやるべきではなく、マネージャーや顧客に、デジタルダクトテープを使用して人為的に肥大化した生産性の数値に依存できると信じさせることは倫理的です。それはビジネス上の決定だと考える人もいますが、率直に言って、これはマネージャーがそれを理解していないという理由だけでそうなっています。最終的には、誰かが重いリファクタリングを通じて、または新しいシステムに移行することによって借金を支払わなければなりません。最終的には、システムを保守可能な状態に保つのはプログラマーです。それは仕事の本質的な部分であるため、リファクタリングを要求する必要はありません。これを理解しないと、ソフトウェアエンジニアリングのすべてを理解できなくなります。これは、すでに重要な債務を負っているシステムがあり、この債務の返済には支払人の決定が必要になることを私は知っています。あなたの仕事はそのような状況は、少なくとも借りを停止するためにあなたの役割をすることです。この負債が発生しました米国が、我々はそれを行うに加圧したので、多分私達は、よく知っていなかったので、まだ、私たちはこの債務を引き受けたし、非常に多くの場合、人々は、我々はこのようにそれを適切に管理することができない、それを理解していないために借金を手渡しました。

ここにあなたのソフトウェアがあります、あなたはそれが好きであることを望みます....ところで、私はそれをやってあなたのクレジットカードを最大限に使いました、あなたが気にしないことを願っています... cya


3

リファクタリングのポイントは、設計を簡素化し、非効率性を排除することです。これにより、将来のバグ修正と新機能の追加が容易になります。

デバッグは、最初にコードを記述するよりも2倍困難です。したがって、コードを可能な限り巧みに記述すると、定義上、デバッグするのに十分ではありません。

コードに新しい機能を追加し続けると、リファクタリングはすぐに費用がかかります。これは、エラー率の低下、デバッグの高速化、修正の迅速化で明らかになります。


しかし、clever == 0そう2 * clever == 0...
トーマスEding

3

ソフトウェアを書くことは、大きなノンフィクションの本や百科事典を書くことによく似ています。

最初のドラフトは常に下手です。再編成し、不要なセクションを削除し、一貫したスタイルを確保することで、常に改善できます。

修正する必要があるときはいつでも、最も簡単なことは、新しいセクションを追加したり、いくつかの単語を変更したりすることです。しかし、改訂版が山積みになると、本はその組織を失い始めます。そのため、再編成をさらに進める必要があります。そうしないと、本は無意味な寄せ集めになります。


3

たとえば、デスクトップコンピューターを取り上げます。タワー、モニター、キーボード、マウス、プリンター、スキャナー、スピーカーがあります。最終的に必要なのは、すてきな整理されたデスクだけです。ですから、盲目的にプラグを差し込むだけで、数分後にはすべてが思い通りに設定されます。まあ...ほぼあなたがそれを望む方法。

1日後、スピーカーのバランスを変更しているときに、誤って左右のスピーカーを間違った領域に配置したことに気づいたので、位置を入れ替えたいと思います。しかし、いや!絡まったコードのジャングルがあります。スピーカーの移動に進むと、マウスコードが引っ掛かり、マウスがスピーカーと一緒にドラッグされます。また、キーボードにはたるみがなくなりました。以前は、キーボードを机から膝の上に移動できました。

さて、マウスとキーボードのプラグを抜いて再挿入すれば、すべてが修正されます。しかし、これは将来の再編成や将来の追加には役立ちません。また、マウスとキーボードのコードをジャングルに織り込むのも面倒です。

より良い解決策は、すべてのコードを再接続して、各コードが他のコードと干渉しないきれいな方法でそれらを再び接続することです。現在、将来の変更は簡単であり、引き続き簡単です。後で大きな利益を得るために少し前もって投資します。

重要な点は、元のソリューションがほとんど機能したことです。それがリファクタリングの問題です。最初は機能しますが、将来の変更を簡単に行うには(スピーカーを移動して)既に存在するものを変更する必要があります。


2

それは、前夜のワイルドでクレイジーなパーティーの後に家を片付けるようなものです。

リビングルームが完全にゴミになったとしましょう。家はまだ家であり、居間はまだ居間です。それは動作しますが、それができる方法ではありません。混乱を見つめた後、クリーンアップする必要があることに気づきます。

だから、あなたはゴミの袋詰めを開始します。すでに良く見えます。だから、部屋を見て、家具をまっすぐにすることにします。あなたは一つのピースを戻し、次に次のピースを置きます。うわー、部屋は本当によさそうだ。あなたは誇りに思っています。

妹が入って来て、部屋がゴミのように見えると言ったら、本棚を修理してカーペットを掃除機で掃除する必要があります。彼女は正しいです。部屋は本当にとてもよく見えます。

周りを見ると、すべて同じ高さのウィンドウシェードがはるかに良く見えることがわかります。できた うわー、部屋は素晴らしいです。

コードを同じように扱います。


1
私はそれが好きですが、私はそれを台所の掃除に変えます。しばらく料理はしませんが、その後は物事が良くなります。PHBは、会社の時間にパーティーを開催することに関連して問題を抱えている可能性があります。)
Jaap

まともな例えですが、読者が知っておくべき欠陥が1つあります。家を掃除しないと、文字通り、家は文字通り使いにくくなります。一方、プログラムでは、これは起こりません。
トーマスエディング

1

簡単!

例を挙げましょう...誰もが人生で親愛なる人への手紙を書いています。それらの手紙では通常、作文にも注意を払っているので、大切な人でなければなりません。

だから、あなたはあなたのテキストを持っています... ...意味はどちらの方法でも通りますが、あなたは全体を素敵に聞こえさせたいです!右?

リファクタリング、同じこと...同じ情報、多かれ少なかれ、構成はより優れています。そして、それはおそらく読者によるより良いレビューになるでしょう。

別の例-雑誌の記事を書く。2人の作家はどちらも「自分のもの」を知っていますが、唯一の違いは「書き方」を知っている人と、このような答えから書くことを学んだような書き方です。

誰の記事を覚えていますか?


1

物理的な世界の物事に類似するものはすべて-劇場の建設のように-IMO、ひどいです。

コードのリファクタリングは、コードのリファクタリングと似ていることを説明する必要があります。ソフトウェアは、物理的なアナログにはない方法で順応性があります。物事がますます複雑になると、コードベースの大部分または小さな部分をリアクター(または、必要に応じてやり直し)する必要があります。

なぜリファクタリングするのですか?リファクタリングされないコードは、維持および変更に1分あたりのコストがかかり、最終的には問題が大きくなるためです。

リファクタリングに関して非常に興味深いのは、コードベースをやり直しますが、少なくとも最初は機能は同じままです。


/すべての類推/?私は強く反対します。あなたはもっと創造的である必要があります。また、OPの質問には答えません。
トーマスエディング

@ThomasEding、コメントありがとう。2番目の点には同意しません。実際、私は質問に答えています。ただし、あなただけのために今すぐ編集を行います。
ダンローゼンスターク

0

リファクタリングは、何かをクリーンアップし、「滞在」する新しい場所を与えることと同じです

簡単でシンプルで、多くの時間がかかることがあります。時々、私はその人Xが巨大な混乱を残し、それをきれいにしなければならないことを追加しました。


0

私は別の例を考えましたが、ここでは誰も言及していません。リファクタリングは数学の方程式を並べ替えることとほぼ同じです(ただし、「非技術者」の範囲外になる可能性があります)。

方程式を並べ替えるとき、意味を変えずに、読みやすく使いやすくするために、「ものを動かす」だけです。


1
私がPHBまたは顧客である場合(このリファクタリング作業の費用を支払う予定の場合)、なぜ気にする必要がありますか?コードは動作します(私の観点から)
Dan Pichelman

0

彼らに簡単な数学の方程式を与えます。例えば:

どちらが簡単ですか?

y = x + x

または

y = 2x

リファクタリングも同様の概念です。ただし、単純な数学方程式ではなく、アルゴリズムを使用します。主なアイデアは、同じ結果が得られるため、2つの方法を入れ替えることができるということです。

実行できる最も簡単なリファクタリングは、名前の変更です。

doX() { ... }
{
   doX()
}

意味がわからないため、doXと呼ばれることを本当に望まないため、よりわかりやすい他の名前に名前を変更し、使用した場所を置き換えます。

doBusinessTransaction() { ... }
{
   doBusinessTransaction()
}

これにより、問題や機能強化が発生したときに、アプリケーションを理解して修正する時間を短縮できるため、後でお金を節約できます。さらにお金を節約するために、使用している言語に応じて自動的にこれを行う無料のツールがあります。また、これらのツールはライセンスが制限されていないため、直接使用する場合は確認する以外に特別なことを行う必要があります。


1
誰もが理解でき、コード自体に非常に似ているため、この類推は本当に好きです。
D.

おかげで、私も私のブログに投稿しましたtrajano.net/2013/05/refactoring-explained
Archimedes Trajano

0

写真は千の言葉を言います。たとえば、リファクタリングには2つの使用例があります。

  • 初めて物事が正しく行われない場合:

初めて物事が正しく行われない場合のリファクタリング

  • 面倒な場合:

面倒なときのリファクタリング

参照資料


XKCDは、ルーチンタスクをより効率的にすることで、他の方法よりも多くの作業を行うことになりかねないという事実を無視する価値があります。そのため、タスクの追加のパフォーマンスから得られる価値を考慮する必要があります。
bdsl


0

リファクタリングで与えられた答えを考慮し、技術者でない人には説明しないでください。リファクタリングは、彼らが知る必要のない技術的な活動です。

もちろん、多くの人は、品質によって駆動されるが、スケジュールによって駆動されると言います。これらの場合、私はより議論の余地のあるアドバイスを与えます:言わないでください!

破壊的?そうは思いません。ソフトウェア開発者は専門家です。私たちの仕事は、できるだけ早く効果的なソフトウェアを構築することです。…スケジュール主導型のマネージャーは、私ができる限り早くできることを望んでいます。私のやり方は私の仕事です。最速の方法はリファクタリングです。したがって、リファクタリングします。

(リファクタリング、Martin Fowler、2000、61ページ)

もちろん、リファクタリング以外のことを何もせずに1か月を費やそうとすると、これは機能しませんが、とにかく一般的には悪い考えだと思います。 、または作業したばかりのコードをクリーンアップします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.