0

純粋な API を作成すると、いくつかの課題が生じるようです。たとえば、私は winforms/asp.net アプリを作成することに慣れており、入力が無効な場合、プログラムでダイアログ ボックス/Web ページを表示できます。

ただし、API は、それが実行される可能性のある GUI アプリを認識しません。TakeString (String s) というメソッドがあり、文字列 (s) が 5 文字を超えてはならない場合、クライアントに制御を返すにはどうすればよいでしょうか? 例外はやり過ぎのように思えますか? メソッドで何かを返す場合、単純な戻りは機能しません。

ありがとう

4

2 に答える 2

3

例外はまさに正しいことです。5文字以下の文字列のみを入力として受け入れ、それ以外の場合はスローすることを文書化しますArgumentException。なぜそれがやり過ぎになるのでしょうか?

この場合、クライアントが渡したものの有効性を検出できない場合でも、代替メカニズムについて心配する必要はありません。彼らが自分でそれをチェックするのは、人間の機知を超えているわけではありません。

無効な入力を許容する API を作成しようとすると、災害が発生します。妥当な範囲内で、できるだけ厳密に入力を検証します。クライアントが正常に動作するように強制すると、後で問題が大幅に少なくなります。

于 2011-01-18T21:11:19.663 に答える
2

これを処理するには、例外を使用するのが最善の方法です。

定義上、ユーザーが無効なデータを提供している場合、これは例外です。クライアント アプリは、例外を処理し、必要に応じてユーザーに再入力を促す必要があります。

あなたの API (既に指摘したように) は、アプリの種類を含め、クライアント アプリを認識しない必要があります。クライアント アプリの開発者に処理方法を理解してもらいます。

簡単な例として、次の C# コード行を試してみます。

int myInt = Convert.ToInt32("SSDS");

.NET Framework はユーザーに再プロンプトを出そうとしません。例外をスローするだけです。

于 2011-01-18T21:10:31.390 に答える