より良いデバッグ出力:コンソール.アサートウェイ!


デバッガ?私のコンソールで?


アプリケーションのデバッグへのコンソールの使用seems make people mad .
私は“コンソールを使用しないでください.”物語はこの引用で要約されます.

many developers regularly use the console object’s log method in a way that I think is incorrect.


参照してください、物事は、(そして、おそらく1日の共有)は、確かによく作られたポイントの多くのための反響をしていますが、真実は私はあなたが間違っていると思うなら、私は単に気にしないと最終的にあなたは私を止めることができないということです.
私は“より良い”ソリューションを知っているにもかかわらず、コンソールのデバッグを使用して好きです.このシリーズは、私がVelerableとしてしばしば見ないJSコンソールの特徴を調査するつもりですconsole.log() , あなたがそれを好きになるという望みで.今回は、ログをより冗長にしていますconsole.assert() .

コンソール.断言する


コンソール.主張する?


はい!
あなたの電話console.assert() ブールの状態とメッセージ条件がfalseに評価されている場合、メッセージは出力されます.
console.assert(someMsg.includes("All is Well"), "There has been An Incident.")

// someMsg = "Calamity! Perfidy! Tragedy!"
// Output: 
Assertion failed: There has been An Incident.

なぜこれはより良いですか?


ロギングは、我々に異なる種類の情報を与えます.いくつかのログデータは構造であり、どのコードが実行されているかを知ることができます.
いくつかのログデータが操作され、どのようなデータが実行されているかを知ることができます.
一般的に、デバッグ中にすべての構造ログデータが欲しいので、アプリケーションフローを完全にトレースできます.対照的に、私は、私が追跡しているエラーに関する操作データだけを望みます.エラーのような条件が発生していない場合、操作ログデータはしばしば何も私に教えてくれません.

偽りの美しさ


予期しない振る舞いが起こらないなら、私は通常出力だけを望みます.私は、私が欲しいものをJSエンジンに話します、そして、それが起こらないならば、それは私に警告するだけです.精神的に、「正しい」ということについて考えなければならない.

出力をより良くする


自動付加オブジェクト値


もう一つconsole.assert オプションは、条件とオブジェクトの配列を渡すことです.条件がfalseの場合、オブジェクトは文字列化され、一緒に追加され出力されます.これにより、カスタムエラーメッセージを書き込むことができます🧑🏼‍🍳💋.
let good_investments = ["Mines", "Urchins", "New Fangled Electricity"]
let bad_investments = ["Radium Health Tonics"]

console.assert(bad_investments.length == 0, bad_investments);

// Output:
Assertion failed: Radium Health Tonics

出力形式


何かより多くのオブジェクト値のセットの場合はどうですか?メッセージ文字列、あるいは.私たちはstring substitutions それをインラインで行うには!
let good_investments = ["Mines", "Urchins", "New Fangled Electricity"]
let bad_investment = "Radium Health Tonics"

let losses = {
    pounds: 150,
    reputation: 47,
    body_parts: ["Teeth", "Jaw"]
}

console.assert(
    bad_investment.length == 0,
    "%s has cost you %d Pounds and reduced your reputation by %f%",
    bad_investment,
    losses.pounds,
    losses.reputation
)

//Output:
Assertion failed: Radium Health Tonics has cost you 150 Pounds and reduced your reputation by 47%
あなたがここで起こっていることについて混乱しているならば、私の迅速なガイドをチェックしてください...

オブジェクト文字列置換(私の一番好きなビット)


実際、その同じ記事はオブジェクト置換を示します.の代わりに:
Assertion failed: [object Object]
オブジェクト置換console.append CLIに適切にフォーマットされたメッセージを返します.そして、ブラウザコンソールの拡張可能な、クリック可能なオブジェクト!をクリックすると、直接検査官に周りを掘ると何が間違っているかを参照してください.
console.assert(
    false, 
    "Your %O exceed %d pounds. See %o.", 
    losses,
    losses.pounds,
    losses.history
)

//Output:
Assertion failed: Your >Losses exceed 150 pounds. See >History.

包む


だから、それはconsole.assert ! 豊富な、コンパクトなデバッグメッセージは、必要なときだけを表示するには、十分な能力を提示し、関連情報を探索を与える.
あなたがこれが好きならば、ドーパミンを打ってください❤️) スイッチ🦄) 左側には、JSコンソールのデバッグシリーズの次のエントリのための私の書き込みを購読する!

認識


ヘッダーイメージ@Sigmund , Unsplashライセンスの下で使用されます.