2017-04-11 3 views
0

データベースと話し合うAPIを開発し、CRUD操作を行ういくつかのメソッドを用意しなければならないとしましょう。 、私は与えられた条件のための任意のユーザーを見つけることができない場合Scala機能的APIデザイン

def fetchUsers(criteria: Criteria): List[User] = ??? 

私は空のリストを返すべきか、返却することをお勧めし:のは、私はいくつかの基準に基づいて何かのリストをフェッチする方法を持っているとしましょう[List [User]]を試してみてください。ユーザーが見つからない場合、私は失敗を返しますか?

良い方法とは何でしょうか?

+0

ユーザーが見つからないのですか?もしそうなら、おそらく成功事例に空でないリストタイプを使用したいと思うでしょう。 '[NonEmptyList [User]]を試してください。 – Lee

+0

それでは、Try [_]でAPIを混乱させるのは賢明ですか? – sparkr

+0

その場合は?それが常にエラーであれば、そのタイプで表現する必要があります。そうでなければ 'List [User]'を返し、呼び出し側が空の場合の処理​​方法を決定させる。 – Lee

答えて

1

この質問には明確な回答はありません。この質問には、ユーザーの設定とAPI要件によって異なります。

  1. 空のリスト許容応答は、空のリストを返す場合
  2. ユーザーでなければなりませんが常に存在する場合は、例外を投げることができ、呼び出し方法はそれを
  3. 戻りいずれかの応答を処理する必要がありますかエラー、あなたの場合は試して、これは基本的にこの場合は同じです。

すべての解決策が受け入れられ、要件に依存します。

エラーが発生した場合、呼び出し側は必ずしもさんは、それを処理したくないので、それは

  • RuntimeExceptionsが発生する可能性が呼び出しスタック上のどこにでも扱うことができ
    1. ので、私は個人的には、第1または第2の解決策を好むだろうたとえあなたがDB接続の問題を抱えていて、あなたのメソッドでTryを返したとしても、返り値の前に例外がないことを意味するわけではありません。
    2. コードクリーナー
  • 関連する問題