コード再利用の哲学に対処する方法は?


10

新しいプロジェクトを始めるときは、コードの再利用について常に考えています。

コードをどの程度再利用可能にする必要がありますか?
これをアプリケーションの範囲に制限する必要がありますか、それともプロジェクトの外部で再利用できるようにする必要がありますか?

ときどき、コードの再利用性が単純な設計の邪魔になるように感じることがあります。コードの再利用についてのあなた自身の理解とアプローチを共有してください。


回答:


21

コードは、再利用する前に機能する必要があります。したがって、設計と(主要)機能は、コードの再利用を検討する前に行う必要があります。

再利用を考えて、すでに作成したコンポーネントを再利用するのは良いことです。ただし、コードを記述して機能させるだけの場合もあります。元の問題を解決したら、コードをリファクタリングして、再利用可能にすることができます。


2
最初の文の「だった」はタイプミスの「あった」ですか?

@delnan-「何でしたか?」:-)それをキャッチしてくれてありがとう。

9

KISSとYAGNIを思い出してください:

設計ドキュメントの準備ができたらコードをre-usability better to be considered記述します。これにより、重複する可能性のあるコードのセクション/部分を確認できます。

したがって、明確なデザインがない場合は、KISSおよびYAGNIアプローチを作業に適用してください。


1

これは私の経験によるものですが、それでも適用できると信じており、GlenH7が述べたことに沿っています。

私はさまざまなプロジェクトを行う3社の間で働いています。これらの企業は、いくつかの標準的なプラクティスと作業方法論を使用してお互いの姉妹ですが、多くの点でユニークです。そうは言っても、私は通常、各プロジェクトを新たに開始し、それを成し遂げるか、進捗状況を示したいだけです。次に、前のプロジェクト用に記述したコードまたは機能の一部を覚えているシナリオに遭遇した場合は、次の2つのことのいずれかを行います(時間依存)。

  1. 最速の方法
    他のプロジェクト(時間はあまりありません)から前のコードを現在のプロジェクトにコピーします。
  2. 2番目に高速な方法
    前のコードをコピーして共通ライブラリに配置してから、そのライブラリを現在のプロジェクトに含めます(先に進むのを容易にするため)。

    2b。他の(元の)プロジェクトに変更を加えた場合は、新しいライブラリを使用するようにリファクタリングします(ただし、通常、そのプロジェクトを修正する必要がない限り、そうしません)。

ただ警告されて、一般的なライブラリから一体をテストしてください。共通ライブラリは、依存関係を作成することを意味します。依存関係は障害点を作成します。現在の実装では少し微調整が必​​要な場合がありますが、そのライブラリを使用して他の変更がどのように行われるかはわかりません。


同一のものを4つまたは5つ持つことができるのに、なぜ単一の実装を使用するのですか?あなたの「最速」の方法は、ごく短期的にのみ最速です。
カレブ

@Caleb:そうですね。締め切りが締め切りであることだけがエレガントだと言ったことはありません。リファクタリング中に、同じコードを使用する複数のプロジェクトを認識し、それらを実行して、独自のライブラリに分割します。しかし、それを戸外に出す必要がある場合は、コピーと貼り付けが機能します。また、その1つのプロジェクトに変更を加える柔軟性が得られます。ライブラリを分割して、堅固で柔軟性のあるものにしたい場合は、それらの変更を覚えておきます。
ブラッドクリスティー

1

場合によっては、数行のコードをコピーして貼り付ける方が優れたソリューションであることがわかります。人間の言語でも、少しだけ変化をつけて前に言った文を言いたいときは、だれでも問題が少なくなるので、変化量を使って繰り返します。

ただし、大きなモジュールをサポートしていない少し異なる方法で使用する必要がある場合は、ベースとベースの両方の機能を拡張する可能性が非常に高いため、数行を変更するためだけに複製しないでください。将来の共有のクローン。代わりに、構成可能にするか、ベースとクローンの両方が共有する機能を、両方が使用する別のモジュールにエクスポートします。


0

無理しないでください。そして、よくわからない場合は、何を再利用できるかを確認するのに十分なプロジェクトを作成するまで、アプリケーションスコープに固執してください。

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