.net/c#4.0を使用してC#アプリケーションを作成しています 私はカスタムタイプと辞書を取り入れたメソッドを持っています。 私はこれをさまざまなことに再利用していますが、何らかの理由でロジックをカプセル化する方法を考えることができません。このライン別でちょっと変わった機能を再利用する方法を見つける
if (FastIntParse.FastParse(_dict[_Rule.Key].hourly_data[a].PropertyA) >
_Rule.Value)
はそれが
if (FastIntParse.FastParse(_dict[_Rule.Key].hourly_data[a].PropertyB) >
_Rule.Value)
かもしれ問題を使用している様々なケースで変化する唯一の事は、私はルール値と比較するために使用していますプロパティです。何らかの理由で、再利用の方法を考えることができません。値が関数内で導出されるため、関数に渡す値がないためです。どのようにしてその情報を派生させて渡す必要があるかを知る必要性を抽象化する関数を書くことができます。つまり、そのプロパティの値ではなく、チェックする必要のあるプロパティを渡します。私は、適切なプロパティとそれを必要な場所、このメソッドをインライン書き換え保つ
int a;
for (int z= 0;z<=2;z++)
{
a = (z * z) * 24;
for (; (a%24) <= _Rule.AlertEndTime; a++)
{
if (FastIntParse.FastParse(_dict[_Rule.Key].hourly_data[a].PropertyA) >
_Rule.Value)
{
EnqueueRuleTrigger(_Rule);
break;
}
}
}
....これは明らかに、非常に無駄であり、任意の変更は、多くの場所で行われる必要があります。事前
をする場合には、私は明確ではないです、私もOBを持っていませんループ外のプロパティの参照を取得します。私はループロジック[変更されていない]とメソッドにカスタムプロパティを提供する機能を含むものをカプセル化したいと思います。私が4つの条件を持っていれば、それらが評価するプロパティを除いて全く同じです。このコード全体をコピーして貼り付け、プロパティ参照を変更しています。それらの4つのそれぞれが3つの亜種を持っています。一つは、>、a <とan =を使います。このメソッドを12回少し修正しました。 – Jordan