0

包括的なエラーをディッシュすることになると、可能性ごとにメッセージをディッシュすることなく、人々がどのように長いifステートメントを生成するのか興味があります。

次のようなものの利点:

if(typeof hello !== "undefined" && hello == 3){

}

両方の条件が必要ということです。次のようなifステートメントの配列とオブジェクトを使用して実験してみました。

var validate = [
    (typeof hello !== "undefined"),
    (hello == 3)
];

underscore次に、の関数のようなものを使用してvs値_.without()を取得し、エラーがあるかどうかを確認できます。上記のこの配列の問題は、helloが未定義の場合、エラーが発生することです。truefalse

var validate = [
    (typeof hello !== "undefined"),
    (typeof hello !== "undefined" && hello == 3)
];  

だから私はこれをしなければなりません、それは非常に繰り返しです。

これまでの例では、何の応答もありません。私はこれを思いついた。

var valid = [
    (_.isObject(email)) ? false : "email is not object",
    (dotty.exists(email, "event")) ? false : "event does not exist",
    (email.event == "inbound") ? false : "event is not set to inbound",
    (dotty.exists(email, "ts")) ? false : "ts does not exist"
];
var errors = _.without(valid, false);
if(errors.length == 0) // no errors

これははるかに進歩的です。

var valid = [
    (_.isObject(email)) ? false : "email is not object",
    (dotty.exists(email, "event")) ? false : "event does not exist",
    (dotty.exists(email, "event") && email.event == "inbound") ? false : "event is not set to inbound",
    (dotty.exists(email, "ts")) ? false : "ts does not exist"
];
var errors = _.without(valid, false);
if(errors.length == 0) // no errors

しかし、私はまだ冗長である必要があります。

これはすべて次のアイデアにつながります。

エラーを処理するために2つありました。

  1. エラーが表示された場合は、先に進む前にそのエラーに対処してください
  2. すべてのエラーを提示する

私は後者が好きです。

検証目的の複雑なifステートメントを支援するライブラリはありますか?

アップデート

次のステートメントは前のステートメントとは関係がないので、時々良いので、私はクレイジーなスロープで立ち往生しています。

これを防ぐ方法があるはずです...

typeof email !== "undefined"
typeof email !== "undefined" && _.isObject(email))
typeof email !== "undefined" && _.isObject(email)) && dotty.exists(email, "event"))
typeof email !== "undefined" && _.isObject(email)) && dotty.exists(email, "event")) && email.event == "inbound"

対読みやすさ

typeof email !== "undefined"
_.isObject(email))
dotty.exists(email, "event"))
email.event == "inbound"

これをもっとシンプルにして、傾斜を持たないようにしたいと思います。以下の例では、 emailisundefinedcolorisであり、それはに等しいとしましょうyellow。次のエラーレポートを見たいです

(typeof email !== "undefined") ? false : "no email",
(_.isObject(email)) ? false : "email isn't object",
(dotty.exists(email, "event")) ? false : "event not present",
(email.event == "inbound") ? false : "event not inbound",
(typeof color !== "undefined") ? false : "no color",
(color == "yellow") ? false : "color not yellow",

[
    "no email",
    "email isn't object",
    "event not present",
    "event not inbound",
    false,
    false       
]

つまり、有効な色なのでエラーとして返されないようにしたいのです。しかし、他のすべてのエラーを返したいです。

または私はただ必要ですか:

[
    "no email",
    false,
    false
]

両方が未定義の場合coloremail私は見たくないだけです:

[
    "no email"
]

これは誤解を招く恐れがあります。少なくとも見たい

[
    "no email",
    "no color"
]

またはすべて

[
    "no email",
    "email isn't object",
    "event not present",
    "event not inbound",
    "no color",
    "color not yellow"
]

より傾斜した例:

var valid = [
    (typeof email !== "undefined") ? false : "email is undefined", // halt the code 
    (typeof email !== "undefined" && _.isObject(email)) ? false : "email is not object",
    (typeof email !== "undefined" && dotty.exists(email, "event")) ? false : "event does not exist",
    (typeof email !== "undefined" && dotty.exists(email, "event") && email.event == "inbound") ? false : "event is not set to inbound",
    (typeof email !== "undefined" && dotty.exists(email, "ts")) ? false : "ts does not exist"
];
var errors = _.without(valid, false);
if(errors.length == 0) // no errors
4

1 に答える 1

0

コメントの推奨事項によるnoolsと、非常に興味深いリソースです。

于 2016-04-08T02:52:33.253 に答える