1

検索ページの要件で、次の操作を行う必要があります。

  1. ユーザーが検索を実行したテキスト
    (例:2万台以上の携帯電話+サムスン)

  2. 検索の絞り込みの順序
    (特定のユーザーの場合:絞り込みは「price、company、delivery」の順になり、その他の場合は「delivery、price、company」になります。このクラスはこれを処理します)

  3. 結果が少ない場合の一部のパラメーターの緩和。
    (結果が何らかのロジック(たとえば、価格帯のわずかな変更)によって少ない場合は、結果の数を増やすために適用されます)

  4. 検索結果のキャッシュ
    (検索結果のキャッシュ)

これらの操作のために、私は別のクラスを作成しました。このためのクラスを作成するか、「seacrhUtility」で十分であると言う一般的な検索関数クラスで関数を作成するのが正しいかどうかを知りたいです。

4

2 に答える 2

2

質問のタグの1つはOOPであり、OOPのSOLID原則の1つは単一責任の原則であるため、SRPに従うことを試みることをお勧めします。

SRPの要点は、「責任」が「変更の理由」として定義されていることです。

あなたが説明することから、4つのポイントはすべて独立して変更できるように聞こえるので、それぞれを実装するクラスを持つことができます。

正確な詳細によっては、実際の検索と順序付けを1つのクラスで実行することをお勧めします。これは、この2つはおそらく1つの「責任」と見なすことができるためです。

パラメータの緩和は、検索操作に直接関係しないもののように聞こえ、非常に複雑なものに変化して進化する可能性があります。それはおそらく別のクラスとして、おそらくStrategyクラスとしても設計されるべきです。

これで、キャッシングはまったく別の責任であるため、確実に別のクラスとして実装する必要があります。キャッシュする方法や結果をキャッシュする場所を変更する必要があり、そのために検索アルゴリズムに触れる必要がないことを考慮してください。

一方、アプリケーションが比較的単純で、変更する必要がなく、それぞれ4〜5行未満のコードである4つの関数に4つのポイントすべてを実装できる場合は、おそらくそうする必要があります。また、プロジェクトの残りの部分が関数のみを使用して、またはモノリシックオブジェクトを使用して構築されている場合は、そのアプローチに固執する方がよい場合があります。常識を使用してください。

于 2012-09-16T18:35:58.393 に答える
1

これにクラスを使用するのもクールですが、個人的には関数を使用するだけです。必要なものはすべて、いくつかの関数パラメーターとして渡すことができ、関数は、いくつかの静的操作の後に最終的に選択されたレコードを返します。それだけです。

入力に対して異なる時間(コードの異なる部分)で複数のアクションを実行する必要がある場合、または使用されるコードや関数がたくさんある場合は、クラスを使用します...

于 2012-09-16T17:03:30.837 に答える