配列 - Java メソッドの複雑さ

okwaves2024-01-25  6

最近、さらなるプロジェクトで使用するために、Allegro (電子商取引ショップ) の REST-API の Java ライブラリのコーディングを開始しました。

パラメータによるオファーの取得など、複雑さの観点から非常に難しいことに遭遇しました。

基本的に、サービス内のオファーを見つけるために使用できるクエリ パラメータが複数あります。

x 個のパラメータ (文字列などについて話しているわけではありません) を受け取り、どの引数がどのパラメータに対応するかを指定せずにそれらを処理できるユニバーサル メソッドを作成する可能性はありますか?

例:

Seller.Id (唯一の引数として)、または Seller.ID と制限を指定すると、引数の順序が台無しになります。

複数のメソッドを作成することを検討していましたが、別の引数を使用したことを述べたいと思います。メソッドはそれを受け取りますが、12 個の異なる引数とそれらの組み合わせを受け取ると、非常に混乱が生じます。

また、用語が間違っている場合はお詫び申し上げます(外国語)。

何らかのリストやマップの使用を検討したことがありますか?

– マッドプログラマー

2020 年 9 月 4 日 21:37

パブリックオファー getOffers(QueryParameters queryParameters) ここで、QueryParameters には、NULL 許容フィールドを許可するビルダーが含まれています。呼び出し元は shop.getOffers(QueryParameters.builder().phrase("foo").searchMode(SearchMode. Regular).build()); のようになります。

– マイケル

2020 年 9 月 4 日 21:39



------------------------

パラメータを個別のオブジェクトにグループ化することで、この複雑さを軽減できます。たとえば、

をグループ化できます。 SellerInfoオブジェクトへのseller.id、seller.login SearchInfo オブジェクトへのカテゴリ、フレーズ、検索モード、オフセットおよび制限

オブジェクトをパラメータとして使用する w将来、パラメータを追加または削除する必要がある場合でも、メソッド定義を変更する必要はなく、オブジェクト内の属性を変更する必要があります。

ハッシュマップを使用することもオプションです。ただし、これにより、キーと値のペアを管理するオーバーヘッドが増加します。これは、最初のオプションで提案された追加のカスタム オブジェクトを作成したくない場合に適したオプションです。

2

ありがとう、本当に助かりました。興味深い事実として、このプロジェクトはほとんどがネストされた JSON によりオブジェクト上に作成されます。

– Kici33

2020 年 9 月 5 日 13:11

お役に立ててうれしい :) コーディングを楽しんでください

– スラジ・ミシュラ

2020 年 9 月 7 日 6:21



------------------------

この引数を属性として使用してクラス (DTO) を作成してみます。このクラスのみをメソッド (POST または PUT) の引数として置きます。 GET または DELETE には ID 番号のみを使用します...

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。