実行時ではなくコンパイル時にエラーが見つかる方が良いのはなぜですか?私はここや他の場所で同じ話題を検索したが、まともな答えを見つけられなかった。実行時ではなくコンパイル時にエラーを見つけるほうがよいのはなぜですか?
答えて
ソフトウェア開発プロセスの早い段階で、バグが見つかる早ければ早いほど簡単です。通常、コンパイラのエラーや警告は、問題のあるコードの行を正確に示しますが、実行時にバグを見つけるのは、通常、はるかに時間がかかり、面倒なプロセスになります。さらに、しばらくの間バグが表示されない場合もあります(潜在的なバグ)ので、将来お客様のサポートを提供したり、ソフトウェアアップデートをバグ修正、評判の喪失などを処理します。
基本的に、コンパイルするたびにすべてのコードが実行されるため、検出されるエラーはコンパイルごとに自動的に検出されます。
実行時エラーを検出すると、エラーを検出するためにすべてのコードを実行する必要があります。条件付きで実行される分岐が多いコードの場合は、特に注意が必要です。また、エラーの正確な位置を特定することは非常に難しいことがあります。
最終的には、できるだけ早くバグを見つけることになるので、コードが新鮮である間に修正することができます。
また、@Paul Rによると、コンパイルエラーは通知するのが簡単であり(コードとボイラーをコンパイルするだけです)、ランタイムエラーはクラッシュする可能性のあるユースケースのシナリオに特有のものですあなたのシステムが展開されている間。影響を考えてみてください。
エラーには、コンパイル時間と実行時間の2種類があります。できれば、コンパイル時にエラーを発生させたい場合は、診断と修正がはるかに簡単であるためです。
基本的にコンパイル時エラーとは、構文エラー(typo)や型エラー(間違った方法での呼び出しや使用)などが原因でコードを構築できず、コンパイラが続行できないことを意味します。コンパイラは最近、潜在的なランタイムエラーでさえ、すべてのタイプのエラーを識別するために最善を尽くしていますが、デバッグプロセス中ではなくコードを書くときにこれらの問題を修正するのがずっと安く時間がかかります。通常、初歩的な「実行時」分析を行うことができるコンパイラでは、警告が表示されます。これは、コンパイラがコードがジャックアップされていると判断する方法です。それでも警告のシナリオで構築されますが、警告は常にあなたが支払うべきものです。
実行時エラーが発生するのは、コードは正しいかもしれませんが、ロジックがコンパイルされていないか、ビルド中にコードに入るパラメータ(ユーザー入力を考えて)を知る手段がないためです。実行時エラーの例としては、無限ループ、範囲外のエラー、型エラー(数値の入力時にユーザーが文字列を入力すると考える)などがあります。
最終行は、実行後にエラーが発生したときにエラーが発生した場合にはいつでも、コードをよりきれいに、より効果的に保つことができるということです。私はこれが役立つことを願っています:)
- 1. 実行時にNode.jsがコンパイルされないのはなぜですか?
- 2. なぜこのような短い実行時間ですか?
- 3. コンパイル時ではなく、実行時にGoLangの力を計算する
- 4. 出力時間がそれほど短くないのはなぜですか?
- 5. Androidで別のリソースセットを使用する(実行時ではなくコンパイル時)
- 6. DrawItemイベントの実行時にListBoxがちらつくのはなぜですか?
- 7. ページが実行時とデザインが異なるように見えるのはなぜですか?
- 8. Dartがコンパイル時定数を持つのはなぜですか?
- 9. なぜこのプログラムは実行時にエラーを出さないのですか?
- 10. なぜHelios Webプロジェクトが実行時に依存プロジェクトクラスを見つけられないのですか?
- 11. 実行時に最適なリソースをプログラムで見つける
- 12. .NETでは、定数はJIT時ではなくコンパイル時に評価されるのはなぜですか?
- 13. コンパイル時にMavenがsun.jvm.hotspotを見つけられない
- 14. は、VBA実行時エラー1004エクセル - なぜ
- 15. 実行時間の異なるほぼ同じコード - なぜですか?
- 16. イメージのStaticResourceが実行時に見つからないのはなぜですか?
- 17. コンパイル時にローカリティが決定するのはなぜですか?
- 18. コンパイル時に解決されないディレクティブはなぜですか?
- 19. RSpecの実行時にREEが1.9.3より速いのはなぜですか?
- 20. 実行時にモジュールをロードするのはなぜですか?
- 21. このように初期化するとコンパイル時にエラーが発生するのはなぜですか?
- 22. コード実行時にC++がC++より高速なのはなぜですか?
- 23. なぜ "\ 400"はコンパイル時エラーではありませんか?
- 24. コンパイル時にエラーが表示されるのはなぜですか?
- 25. Cプログラムにstdio.hを含めなくても、コンパイル時にエラーが出るのはなぜですか?
- 26. バックグラウンドワーカーのDoWorkイベントハンドラがデザイン時および実行時に設定されていると、実行時間が2倍になるのはなぜですか?
- 27. アクセス違反実行時エラーが発生するのはなぜですか?
- 28. 行を見つけようとしたときの実行時エラー1004
- 29. 「コンパイル時間」と「実行時間」の違いは何ですか?
- 30. なぜ「Microsoft JScript実行時エラー:オブジェクトが必要ですか」?
コンパイル時に実行するのが速いですか? – Tejs