Javaコードの再利用性を向上させる方法は?



How Improve Reusability Java Code



Javaコードの再利用性を向上させる方法は何ですか? Javaコードの再利用性を向上させる3つの方法があります。見てみましょう〜

クラスのインスタンスメソッドを書き換える



クラス継承によるコードの再利用は、正確なコードの再利用手法ではないため、最適なコードの再利用メカニズムではありません。継承は常にいくつかの追加のメソッドとデータメンバーをもたらし、それらは常に再利用クラスのメソッドのコードを複雑にします。

さらに、派生クラスの親クラスへの依存性により、コードがさらに複雑になります。親クラスまたはサブクラスのいずれかを変更すると、親クラスへの変更が子クラスに影響を与える可能性があり、どのメソッドが子によってカバーされているかを覚えるのが困難ですクラス。最終的にどのメソッドがサブクラスでカバーされないか、サブクラスのオーバーライドメソッドが親クラスの対応するメソッドを呼び出すかどうかが不明な場合があります。



単一の概念タスクを実行する限り、どのメソッドもそれ自体が推奨される再利用可能なコードです。このコードを再利用するには、プロセス指向プログラミングモデルに戻り、クラスのインスタンスメソッドをグローバルプロセスに移動する必要があります。

このプロセスの再利用性を向上させるには、プロセスコードを静的ツールメソッドのように記述する必要があります。プロセスコードは、独自の入力パラメータのみを使用でき、他のグローバルプロセスのみを呼び出すことができ、非ローカル変数は使用できません。この外部依存関係の制限により、プロセスの適用が簡素化され、どこでもプロセスを簡単に使用できるようになります。

もちろん、この種の組織では常にコードの構造が明確になるため、再利用性を考慮しないコードでもその恩恵を受けることができます。



Javaでは、メソッドはクラスとは別に存在することはできません。この目的のために、関連するプロセスを独立したクラスに編成し、これらのプロセスをパブリック静的メソッドとして定義できます。オブジェクトデータメンバーを整理してカプセル化するプロセスでは、クラスが不可欠な役割を果たします。クラスは複数のインターフェースを介して実装されます。ポリモーフィズム自体の機能も、優れたコード再利用サポートをもたらします。

最も単純なパラメータインターフェイスタイプを選択してください

パラメータオブジェクトの要件を説明するインターフェイスが単純であるほど、他のクラスがインターフェイスを実装する可能性が高くなり、オブジェクトがパラメータとして使用できるクラスが多くなります。これは、次の例から簡単にわかります。

static public boolean areOverlapping(Window window1、Window window2){...}

このメソッドは、2つのウィンドウが重なっているかどうかを確認するために使用されます。この方法でパラメータから2つのウィンドウの直交座標を取得するだけでよい場合は、それに応じて2つのパラメータを単純化することをお勧めします。パラメータ要件を記述するインターフェイスにメソッドが多すぎる場合があります。

この時点で、同じ問題に直面している他のコードで再利用できるように、グローバル名前空間に新しいパブリックインターフェイスを定義する必要があります。 Cで関数ポインタなどのパラメータを使用する必要がある場合は、一意のインターフェイス記述パラメータ要件を作成するのが最善の選択です。たとえば、次のプロセスがあるとします。

static public void sort(List list、SortComparison comp){...}

このメソッドは、パラメーターで指定された比較オブジェクトcompを使用して、指定されたリスト内のオブジェクトを比較することにより、オブジェクトのリストをソートします。 compオブジェクトでの並べ替えの唯一の要件は、比較のためにメソッドを呼び出すことです。そのため、SortComparisonインターフェイスを他の場所で再利用することはできません。

パラメータタイプをインターフェイスに変更します

オブジェクト指向プログラミングでは、コードの再利用の本当のポイントは、クラスの継承ではなく、インターフェイスのパラメータ型を介してポリモーフィズムを使用することです。クラスではなくインターフェースをプログラミングすることで、コードの再利用を実現します。メソッドのすべてのパラメーターがいくつかの既知のインターフェースへの参照である場合、このメソッドはそのようなオブジェクトを操作できます。メソッドのコードを書くとき、これらのオブジェクトのクラスは存在しません。技術的には、再利用できるメソッドは、メソッドに渡されるオブジェクトではありません。

たとえば、次のような方法があると仮定します。

static public boolean areAnyOverlapping(Collection rects){...}

このメソッドは、特定のコレクション内の長方形のオブジェクトが重複していないかどうかを確認するために使用されます。このメソッド内で、ループを使用してコレクション内の各オブジェクトに順番にアクセスするときに、オブジェクトに長方形のようなインターフェイスタイプをキャストさせることができない場合、オブジェクトの長方形の領域にアクセスするにはどうすればよいですか?唯一のオプションは、キャストされたオブジェクトを独自のクラス形式にキャストすることです。つまり、メソッドは、作業中のオブジェクトのタイプを事前に知っている必要があるため、メソッドの再利用はそれらのオブジェクトタイプに限定されます。

要約すると、このペーパーの3つの手段は、オブジェクト指向の規則で記述された既存のコードを改良するのに適しています。

学習を簡単かつ効率的にするために、本日は一連のJava教育リソースを無料で共有します。 Javaアーキテクトになるための道を歩むすべての人を助けてください。学習交流グループへようこそ:9285,05736