根本原因 対 症状
デバッグで最も誘惑的な罠は、原因を直さずにエラーを 消す パッチです。user がundefinedなのを if (user) { ... } で「修正」すると、エラーは止まります — しかし今度はサインアップが黙って何もしなくなり、これはもっと悪い状態です。けたたましいクラッシュは少なくとも何かおかしいと教えてくれていたのに、今度は何も教えてくれません。本当の問いは なぜここで user はundefinedなのか? です。データベースの参照が失敗したのかもしれません。フィールド名が変わったのかもしれません。上流で await が抜けているのかもしれません。
AIが修正を提示したら、こう尋ねましょう。
- 「これは原因を直しているの、それとも症状を隠しているの?」
- 「値が間違っていた 元々の 理由は何だったの?」
- 「この同じ根本原因が、他に何か壊す可能性はある?」
根本原因の修正は、たいていコードを よりシンプル または より明快 にします。症状のパッチは、たいていガード節や、エラーを握りつぶすtry/catch、あるいは本当の問題を覆い隠すデフォルト値を追加します。後者の類いには疑いの目を向けてください。覚えておく価値のある兆候があります。ある修正が、正しいことをする のではなく クラッシュを防ぐ ことだけを役目とするコードを足すなら、あなたはおそらく症状をパッチしています。本当の修正は、不可能な状態をただ耐え抜くのではなく、まるごと取り除く傾向があります。