データソースの上にビジネスロジックを追加するWebサービスがあるとします。このサービスの各APIはほとんどのように見えます-一連の制約が与えられた場合、これらの制約を満たすデータソースからのアイテムを提供します。 APIからデータソースの「ビュー」を取得したと言えます。
ここで、時間の経過とともに、データソースに対してさまざまな種類のビューを返すように求められます。 「十分に異なる」ビューごとに新しいAPIを追加するか、ギアを切り替えて、目的のビューの種類を指定するパラメーターを取得するgetFooDataView()APIを提供するオプションがあります。どちらの方法に行くかを決定するために、いくつかの競争圧力があります。
これを抽出するために、既存のAPIのバリエーションとは対照的に、何かが独自のAPIであるという線を描くのはいつですか? 2人のクライアントの要求を意味的に区別する理由については、協力しなければならない人によって見方が異なるため、この問題についてコンセンサスを得ることは難しい場合があります。また、将来のクライアントがサービスを利用するのが極端に難しくならないようにする必要もあります。この種の選択を行うためのいくつかのベストプラクティスは何ですか?
個人的には、私はより小さくてよりタイトなAPIに傾倒します。 1つのサイズですべてに対応するAPIを使用すると、何かが使いやすくなるとは思いません。実際には、逆に、緩やかに型付けされた「ju-ju」の適切な組み合わせを理解する必要があるためです。よりタイトなAPIは自明にすることができますが、あなたが望むもの。複雑さを明示するのではなく、単に隠すだけです。
また、より多くの機能をラップするため、1つのAPIがさらに複雑になる可能性がありますが、よりタイトなAPIは、焦点を絞った無駄のないままです。
これは インターフェイス分離の原則 をより大規模に表現したものです。
クライアントが適切なアプローチを選択するのに役立つ他の方法(優れたガイダンスなど)は常にあります。