Programming-methodologies-debugging

提供:Dev Guides
移動先:案内検索

プログラミング方法論-デバッグ

プログラムまたはソフトウェアのエラーを特定して削除することを*デバッグ*と呼びます。 デバッグは理想的にはテストプロセスの一部ですが、実際にはプログラミングのすべてのステップで行われます。 コーダーは次に進む前に最小のモジュールをデバッグする必要があります。 これにより、テスト段階で発生するエラーの数が減り、テストの時間と労力が大幅に削減されます。 プログラムで発生する可能性のあるエラーの種類を見てみましょう。

構文エラー

  • 構文エラー*は、プログラムの文法エラーです。 すべての言語には、識別子の作成、式の作成など、独自のルールセットがあります。 プログラムを書くため。 これらの規則に違反した場合、エラーは*構文エラー*と呼ばれます。 最新の*統合開発環境*の多くは、プログラムの入力時に構文エラーを特定できます。 それ以外の場合は、プログラムをコンパイルするときに表示されます。 例を見てみましょう-

構文エラー

このプログラムでは、変数prodは宣言されておらず、コンパイラによってスローされます。

セマンティックエラー

  • セマンティックエラー*は、*論理エラー*とも呼ばれます。 このステートメントには構文エラーがないため、コンパイルして正しく実行されます。 ただし、ロジックが正しくないため、目的の出力が得られません。 例を挙げましょう。

セマンティックエラー

13行目を見てください。 ここでプログラマは、除数が0であるかどうかをチェックして、0による除算を避けたいと考えています。 ただし、比較演算子==を使用する代わりに、代入演算子=が使用されています。 これで、「if式」が真と評価されるたびに、プログラムは「0で除算できません」と出力します。 間違いなく意図したものではありません!!

論理エラーはどのプログラムでも検出できません。目的の出力が得られない場合は、プログラマーがそれらを識別する必要があります。

ランタイムエラー

ランタイムエラーは、プログラムの実行中に発生するエラーです。 これは、プログラムに構文エラーがないことを意味します。 プログラムで発生する可能性のある最も一般的な実行時エラーの一部は次のとおりです-

  • 無限ループ
  • 「0」による除算
  • ユーザーが入力した間違った値(たとえば、整数ではなく文字列)

コード最適化

品質と効率を改善するためにコードを変更する方法は、*コード最適化と呼ばれます。 コード品質*はコードの寿命を決定します。 コードを長期間使用して維持し、製品から製品に持ち越すことができる場合、その品質は高く、寿命が長いと見なされます。 逆に、あるバージョンのコードが短い期間だけ使用および保守できる場合、たとえばバージョンが有効になるまで、品質が低く、寿命が短いと見なされます。

コードの信頼性と速度が*コード効率*を決定します。 コードの効率は、ソフトウェアの高いパフォーマンスを確保するための重要な要素です。

コードの最適化には2つのアプローチがあります-

  • 直観ベースの最適化(IBO)-ここでは、プログラマは自分のスキルと経験に基づいてプログラムを最適化しようとします。 これは小さなプログラムでは機能するかもしれませんが、プログラムの複雑さが増すと悲惨に失敗します。
  • エビデンスベースの最適化(EBO)-ここでは、自動化されたツールを使用してパフォーマンスのボトルネックを見つけ、関連する部分を適宜最適化します。 すべてのプログラミング言語には、独自のコード最適化ツールのセットがあります。 たとえば、PMD、FindBug、およびCloverは、Javaコードを最適化するために使用されます。

時間が不足し、メモリが高価になるため、コードは実行時間とメモリ消費に対して最適化されます。 2つの間にバランスが必要です。 *時間の最適化*によりメモリの負荷が増加するか、*メモリの最適化*によりコードが遅くなると、最適化の目的が失われます。

2つの変数を入れ替え

実行時間の最適化

ユーザーに高速なサービスを提供するには、実行時間のコードを最適化する必要があります。 実行時間の最適化のためのいくつかのヒントがあります-

  • 組み込みの実行時間最適化を備えたコマンドを使用する
  • if条件の代わりにスイッチを使用
  • ループ構造内の関数呼び出しを最小限に抑える
  • プログラムで使用されるデータ構造を最適化する

メモリ最適化

ご存知のように、データと命令はメモリを消費します。 データとは、式の結果である中間データも指します。 また、最適化しようとしているプログラムまたはモジュールを構成する命令の数を追跡する必要があります。 ここに*メモリ最適化*のいくつかのヒントがあります-

  • 組み込みのメモリ最適化を備えたコマンドを使用する
  • レジスタに保存する必要がある変数の使用を最小限に抑える
  • 何度も実行されるループ内でグローバル変数を宣言しないでください
  • sqrt()などのCPU集中型関数の使用を避けます