コードの重複は悪いことであると同僚に説得するにはどうすればよいでしょうか?

StackOverflow https://stackoverflow.com/questions/4226284

質問

私の同僚は、私たちが一緒に取り組んでいるプロジェクトに新しい機能を実装していました。彼は、同じプロジェクトから同様の機能の実装を含むファイルを取得し、そのコピーを作成して、すべてのグローバル宣言の名前を変更し、実装。そのため、名前の変更を除けばほぼ同一の 2 つの大きなファイルが完成しました。

私は、それによってプロジェクトの保守がより困難になることを説明しようとしましたが、彼はそのようにプログラムする方が簡単で、「問題がない」場合はコードを修正する理由がないと言って何も変更したくありませんでした。壊れた」。

このようなコードの重複は悪いことであると彼に説得するにはどうすればよいでしょうか?

に関連しています この質問, しかし、私は技術者 (別のプログラマ) を対象とした回答にもっと興味があります。たとえば、本のような信頼できる情報源への参照があればよいでしょう。すでに単純な引数を試しましたが、成功しませんでした。

役に立ちましたか?

解決

彼は彼のコードのバグを見つけたとき、彼は何をするかを彼にして下さい。どのように多くの場所が、彼は今ではそれを修正する必要があるのでしょうか?

また彼にへの回答を表示することができ、この質問(なぜ「コピー&ペースト」である危険なコードの?)ます。

他のヒント

彼はコーヒーを希望する場合は、

、彼は全体の代わりに、カップのコーヒーポットから時点で1つの一口を取得します。彼は非常に小さい部分でアウトdolledする必要がありますクリームと砂糖を追加した場合、これは特に効果的です。 これは(コードの20個を補正するよりもむしろのような)非常に面倒で疲れるあるか反復作業示すべきである。

彼はあなたの背中を持っている他のすべての人を見ることができるので、その後、この投稿に彼にリンクを送信ます。

ここには 2 つのオプションがあります。

  1. 彼は合理的な人ですが、単純に経験があまりありません. 。この場合、あなたのコード内で他の誰かとコードが重複している明確な例を彼に示すことで、あなたの議論を合理化できる可能性があります。また、元のコピーにバグ (またはさらに良いのは、いくつかのバグ) を見つけて、コードが壊れているので修正する必要があることを彼に伝えることもできます。

  2. 彼は頑固なお尻だ:それなら、彼にエネルギーを浪費すべきではありません。上司のところに行って、上司に対処してもらいましょう。まさにそのような人もいます。

最初のオプションの方が明らかに優れていますが、選択の余地がない場合もあります。そして、地球の裏側で重要な顧客が叫び始めたため、最終的に午前 3 時にコードをメンテナンスする必要があるのがあなたであるとしたら、それは間違いなくあなたの問題であり、あなたの上司が対処すべきです。

そして最後に、上司があなたが間違っていると考えるなら、あなたはおそらく間違った場所にいるでしょう。

彼にのリファクタリングののコピーを渡します。

コードのバージョンを向上させるも多いので、彼が嫉妬してイライラしていること、そして言う - あなただけの私のコードにリンクされていた場合...

あなたの同僚は、長いを犠牲にすることによって、彼の短期有効性を最適化しています 組織の長期的な効果(例えば、彼の同僚の残りの部分だけでなく )自分自身として。最初のファイルに必要なすべての変更 そう秒1で必要とされているが、誰も覚えていないだろう...と それはむしろ1よりも、見つけて修正の2サイクルが発生します。

あなたは、コードの上にクローン検出を実行して、単に彼のマネージャーに結果を示す可能性があります。

リストの重複コードするで見るウィキペディアます。

あなたは私たちの CloneDR の検出器を使用して、さまざまな言語のためのクローンdetecionのサンプルを見ることができます。それは設計されています 一貫性のある名前の変更とコードの大きなブロックを検出し、それができる見つけるために 起こった正確に何を示しています。

あなたがバグを見つけたとき、あなたは2つの場所でそれを変更する必要があるため。あなたが新しい機能を追加したいときなので、次の2つの場所でそれを追加する必要があります。

技術的な理由で上司に

アピール。上司が同僚のメソッドと一致/および/または彼はそれを修正することはありません場合は、理由に訴えが機能しない場合は、あなたが行うことができますずっとそこにaintのます。

それはあなたの友人が今この問題を解決することについてではありません。それはあなたのチームの成長についてです。

彼は、彼がチーム&プロジェクトへの不公平されていることを実感してください。彼はまだそれに同意されない場合は、彼にコーヒーを取得し、あなたが彼のキーボードの上に取り、実際に彼の前にコードを修正する可能性がありながら、それをすすりで座って彼に尋ねます。

彼は恥ずかしい取得し、それを次の時間(大きな勝利を)しない場合があります。私はこの4倍を使用しているし、それは常に取り組んできました!

幸運ます。

正当な理由の多くは、コードを複製していないがありますが、ちょうど頼む...あなたのチームは(コードの重複を含む)のコードの100K行、またはコードの50Kラインを維持したいのでしょうか?これは、この時点で、コードの重複を見えるかもしれませんが、あなたの同僚は、DRYの概念の重要性を見たが、S /彼は次の5年間に、より多くのコードを複製した場合を想像していない理由である、最小限です。そのコードを維持しようとしているのは誰?あなたのチーム?何の場合は/彼は一日の仕事を残し?あなたのチームは、このがらくたを維持したいですか? 、その後、あなたはすでに非常に説得力のあるケースを作っていない場合:)「将来的にはより多くのバグを有することになりやすい」「より多くの重複」=を言及しないように、コードを複製することはない。

は、アプリケーションがビジネスに行くことができる場所がわからないことを彼に知らせる...簡単なテスト・アプリケーションは、時々私は頻繁で、これを見てきました...以上の修正およびオーバー、そして最終的に多く使用されてしまう得ることができます中小企業。そして、代わりに前に固定されている可能性がものにオーバーeveryting及び廃棄時開始の、それができる一方、あなたは、単に、今、短いと甘い、それを行うことができます...

彼はおそらく、それが壊れたaintのことを想定しています、とはならないだろう。また、完璧では良いの敵です。私は彼があなたよりもエラーの可能性の異なる評価を持って、彼はコピーの危険性に気づかないと思う/貼り付けられません。

おそらく、あなたはそれがいかに簡単かを示すために、彼のためにそれを破ることができます。あなたができない場合は、おそらく彼は正しいです。

彼はあなたに優れた(またはスーパーバイザー)であれば、より多くの説明を聞いて - 。その可能なコンテキストについてもっと知るために...コードをリファクタリングする多分doesntの価値がある(多分、小規模なプロジェクトである)

は、彼があなたと同じであれば、あなたは(より良いもの)このソリューションを提案することで、あなたの上司に報告することができます。

あなたが彼より優れている場合は、ちょうどあなたの方法を行うには、彼を「尋ねる」...

まず、彼は右だということを認める:コピー&ペースト確かに高速です。の今

すると、問題は長期的にはコストで、かつそれができるよう、重複して、システムは同様に、注文していないため、コストが増大することと言います。彼は難しく、それがシステムで動作するようにされ、障害、混乱、そしてあなたが持っているより多くの障害を導入しています。より良い、それを整理するために、今いくつかの努力を適用すると、(通常は)長期的に報われる。それはちょうど整理あなたの机や部屋を維持するようなものだ。

これはソフトウェアのイヴァー・ヤコブソンの考えであるエントロピー

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top