プログラミング方法論-デバッグ
プログラムまたはソフトウェアからエラーを識別して削除することは、 debugging。デバッグは理想的にはテストプロセスの一部ですが、実際にはプログラミングのすべてのステップで実行されます。コーダーは、先に進む前に、最小のモジュールをデバッグする必要があります。これにより、テストフェーズ中に発生するエラーの数が減り、テストの時間と労力が大幅に削減されます。プログラムで発生する可能性のあるエラーの種類を見てみましょう。
構文エラー
Syntax errorsプログラムの文法エラーです。すべての言語には、プログラムを作成するための識別子の作成、式の作成など、独自のルールセットがあります。これらのルールに違反すると、エラーが呼び出されますsyntax errors。多くの現代integrated development environmentsプログラムを入力するときに構文エラーを識別できます。それ以外の場合は、プログラムをコンパイルすると表示されます。例を見てみましょう-
このプログラムでは、変数prodは宣言されていません。これは、コンパイラーによってスローされます。
セマンティックエラー
Semantic errors とも呼ばれます logical errors。このステートメントには構文エラーがないため、正しくコンパイルおよび実行されます。ただし、ロジックが正しくないため、目的の出力は得られません。例を見てみましょう。
13行目を見てください。ここでプログラマーは、0による除算を避けるために、除数が0であるかどうかを確認したいと考えています。ただし、比較演算子==を使用する代わりに、代入演算子=を使用しています。これで、「if式」がtrueと評価され、プログラムが「0で除算することはできません」として出力を返すたびに。意図したものではありません!!
論理エラーはどのプログラムでも検出できません。目的の出力が得られない場合は、プログラマー自身がそれらを識別する必要があります。
ランタイムエラー
ランタイムエラーは、プログラムの実行中に発生するエラーです。これは、プログラムに構文エラーがないことを意味します。プログラムで発生する可能性のある最も一般的な実行時エラーのいくつかは次のとおりです。
- 無限ループ
- 「0」による除算
- ユーザーが間違った値を入力しました(たとえば、整数ではなく文字列)
コードの最適化
コードの品質と効率を向上させるためにコードを変更する方法は、 code optimization. Code qualityコードの寿命を決定します。コードを製品から製品へと引き継いで長期間使用および維持できる場合、その品質は高いと見なされ、寿命が長くなります。逆に、あるバージョンが有効になるまでなど、コードの一部を短期間しか使用および保守できない場合、そのコードは低品質であり、寿命が短いと見なされます。
コードの信頼性と速度が決定します code efficiency。コードの効率は、ソフトウェアの高性能を確保する上で重要な要素です。
コードの最適化には2つのアプローチがあります-
Intuition based optimization (IBO)−ここで、プログラマーは自分のスキルと経験に基づいてプログラムを最適化しようとします。これは小さなプログラムでは機能するかもしれませんが、プログラムの複雑さが増すにつれて惨めに失敗します。
Evidence based optimization (EBO)−ここでは、自動化されたツールを使用してパフォーマンスのボトルネックを見つけ、それに応じて関連する部分を最適化します。すべてのプログラミング言語には、独自のコード最適化ツールのセットがあります。たとえば、PMD、FindBug、CloverはJavaコードを最適化するために使用されます。
時間は少なく、メモリは高価であるため、コードは実行時間とメモリ消費に対して最適化されています。2つの間にバランスがなければなりません。場合time optimization メモリの負荷を増やす、または memory optimization コードが遅くなり、最適化の目的が失われます。
実行時間の最適化
ユーザーに高速サービスを提供するには、実行時間に合わせてコードを最適化する必要があります。実行時間の最適化に関するヒントを次に示します-
実行時間の最適化が組み込まれているコマンドを使用する
if条件の代わりにスイッチを使用する
ループ構造内の関数呼び出しを最小限に抑える
プログラムで使用されるデータ構造を最適化する
メモリの最適化
ご存知のように、データと命令はメモリを消費します。データとは、式の結果である中間データも指します。また、最適化しようとしているプログラムまたはモジュールを構成している命令の数を追跡する必要があります。ここにいくつかのヒントがありますmemory optimization −
メモリ最適化が組み込まれているコマンドを使用する
レジスタに格納する必要のある変数の使用を最小限に抑える
何度も実行されるループ内でグローバル変数を宣言することは避けてください
sqrt()のようなCPUを集中的に使用する関数の使用は避けてください