問題タブ [argument-validation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C#:拡張メソッドで「this」引数を検証するためのベストプラクティス
拡張メソッドがあるとしましょう
引数eを検証するには、次のようにする必要があります。
A)if(e == null)throw new NullReferenceException()
B)if(e == null)throw new ArgumentNullException( "e")
C)チェックしないe
コンセンサスは何ですか?
私の最初の考えは常に引数を検証することなので、ArgumentNullExceptionをスローしました。繰り返しになりますが、TakeRandom()はeのメソッドになるため、おそらくNullReferenceExceptionになるはずです。しかし、それがNullReferenceExceptionである場合、TakeRandom()内でeのメンバーを使用しようとすると、とにかくNullReferenceExceptionがスローされます。
たぶん、Reflectorを使用してピークに達し、フレームワークが何をするかを調べる必要があります。
c# - C#: 引数の検証: null/空の文字列
文字列引数を検証するためにコードを記述しなければならなかった回数が数えきれないほどあります。
とにかくこれを回避する方法はありますか?これを回避するための属性または契約による設計メカニズムはありますか? 言う方法はありません:
実際にそのタイプを作成する必要はありませんか?
c# - 1 つの引数が null の場合のベスト プラクティスは何ですか?
メソッドの入力を検証するときに、引数が null かどうかをチェックしていました。そうであれば、ArgumentNullException をスローします。リスト内のすべての引数に対してこれを行うため、最終的には次のようなコードになります。
これでよろしいですか?なぜ私はこれをしなければならないのですか?例外をスローする代わりに、単純にすべてのチェックをグループ化して null 値を返せばよいでしょうか? この状況に対処するためのベストプラクティスは何ですか?
PS:これを変更したいのは、メソッドが長いと非常に面倒になるからです。
アイデア?
c# - 引数の検証を回避する方法
プリミティブ引数と「複雑なデータ」の検証
引数の検証
メソッドを記述するときは、操作を実行する前に、まず引数を検証する必要があります。たとえば、人を表すクラスがあるとします。
この Person クラスの何が問題になっていますか? name と age は、値が Person のフィールドとして設定される前に検証されません。「検証済み」とはどういう意味ですか? 両方の引数をチェックして、その値が許容可能であることを確認する必要があります。たとえば、name の値が空の文字列の場合はどうなるでしょうか。それとも age の値が -10 ですか?
引数の検証は、値が受け入れられない場合に ArgumentExceptions または派生例外をスローすることによって実行されます。例えば:
これにより、 Person のコンストラクターが受け取る引数が適切に検証されます。
退屈で吐き気がする
あなたは長い間引数を検証してきたので (そうですか?)、すべてのメソッドで if (....) throw Argument... ステートメントを書くのにうんざりしているでしょう。
コード全体で何億回も String.IsNullOrEmpty を記述しないようにするにはどうすればよいでしょうか?
java - 引数チェック ライブラリ - 暗黙的/明示的な Null チェックの引数
現在、Java 用の小さな引数チェック ライブラリを作成しています。チェックは、次のような流暢なインターフェイス方法で記述されます。
これまでのところ、これらのチェックのセマンティクスは、引数が null ではないことも暗黙的にアサートするというものです。null を許可するisNullOr()
には、2 番目の例のように修飾子メソッドを使用できます。
次に追加したいのは、次のようなチェック反転のサポートです。
しかし今では、デフォルトの nullness 処理が奇妙で直感的ではなくなっていると感じています。テストを逆にする正しい方法は、null を許可することです。null を禁止するには、isNotNull()
チェックを明示的に追加する必要があります。
このため、null 性を常に明示的にチェックする必要があるようにセマンティクスを変更することを考えています。私はこれを行う 1 つのプロジェクトを知っています: Bean Validation。ただし、null は無効な引数であることが多いため、これによりおそらくチェックの約 90% が 12 文字長くなるという欠点があります。
では、長い話を簡単に言うと、暗黙の null チェックの賛成意見と反対意見は何ですか? たぶん、これまたは他の方法でそれを行う他のライブラリまたは標準がありますか?
java - Javaコンストラクターの引数に基づいて応答する方法
アプリへの新規ユーザー登録用のMVCタイプのアーキテクチャがあります。ユーザーは登録フォームをコントローラーサーブレットに送信します。このサーブレットは、ユーザーパラメータを抽出し、それらをクラスコンストラクタに渡します。クラスコンストラクタは、引数に基づいて初期化されたすべてのフィールドを持つテンプレート(またはダミー)ユーザーを表します(そして返します)。
メソッドやコンストラクターを使用する前に、引数の検証を主張する人々を覚えています。今、私は引数の妥当性をチェックしようとしています(たとえば、それらはnullではありません)。したがって、無効な値を持つ引数を見つけた場合、コンストラクタから値を返すことができないため、この特定の引数が無効であることをサーブレットに通知するにはどうすればよいですか。
私を助けてください。
python - argparse での引数の依存関係
Python スクリプトに渡された引数に基づいてアクションを実行する必要があるテスト シナリオがあります。要件は次のとおりです。
test.py -a a1 -b b1 [[[-c c1] [-d d1]] | [-e e1 -f f1]]
- ユーザーは、必須の引数「-a」および「-b」を渡す必要があります。
- 引数「-c」および「-d」は、個別に渡すことができるオプションの引数です。
- 引数「-e」と「-f」はオプションの引数で、必須の引数と一緒に渡す必要があります。
- 「-c」または「-d」のいずれかが「-e」および「-f」とともに渡された場合、スクリプトは引数「-c」または「-d」に対してエラーを返す必要があります。
- 「-e」および「-f」が「-c」または「-d」とともに渡された場合、スクリプトは引数「-e」および「-d」に対してエラーを返す必要があります。
エラーは、すべてのオプション引数の一般的なエラーである可能性があります。
これまで、parents=
オプションを使用して実行しようargparse.ArgumentParser
としましたが、渡された引数を読み取ろうとするとエラーが発生します。
スクリプトを次のように実行すると:
エラーが発生します:
どんな指針も高く評価されます。ありがとうございました。
回答: 解決策はハックですが、うまくいきました。
IMO、argparser は引数の依存関係をより効率的に処理する必要があります。多分誰かが貢献して私たち全員を助けてくれるでしょう.. :)