デバッガ心得-1
1611 ワード
多く総括して、多く考えて、多く疎通するのは1種のとても良い仕事の方式です.多くのことは簡単で勝手に見えるが、これらのことを書くことと頭の中で回ることは、これから働くeffect factorには大きな違いがある.そこで、今日のデバッグコードの心得を書きます.
デバッグのプロセスは、現象からソースを遡るプロセスです.現象の観察については,強力なdebugツールを用いてもよいし,最も原始的な方法である印刷エラー情報を用いてもよい.いろいろなことがありますが、私は後者を使っています.現象の観察については,粒度が太く細い.たとえば、今日プログラムをデバッグするときは、プログラムの正確性を確認し、テストコードを作成する必要があります.このコードでは,error ratioを計算するために絶対値関数abs()を用いた.具体的な計算方法は以下の通りです.
(abs(real_value - expected_value)/expected_value) * 100%
検査の結果,error ratioには大きな誤差があることが分かった.そこで、私は細粒度の観測を行い、absを取り除き、error_を観測しました.ratioの正負値.観測結果はすべてreal_valueはexpectedより大きいvalue.これはreal_valueは計算ミスでその値を大きくしました.次に、ソースプログラムに計算real_が含まれていることを確認します.valueのコード.計算real_valueのコードには判断構造がありますが、まず判断構造の中で判断条件が正しいかどうか、特に境界値を確認します.正しい場合は、判断構造内のループ構造の境界値を表示します.境界値の判断については、境界値に関連するすべてのインスタンスをリストし、oneby oneは各インスタンスが正しい結果を得ることができるかどうかを検出することを経験しています.最後に,シーケンス文を検出し,シーケンス文では変数名の変更を忘れがちであるが,これは主にプログラミング時にコードを貼り付けることによるものである.
プログラミング時には、以下のように完全に同じコードが表示されないようにします.
このコードは統合でき、コードの長さを短縮し、コードの美しさを向上させ、読みやすさを高めるだけでなく、プログラムの拡張を容易にすることが重要です.
デバッグのプロセスは、現象からソースを遡るプロセスです.現象の観察については,強力なdebugツールを用いてもよいし,最も原始的な方法である印刷エラー情報を用いてもよい.いろいろなことがありますが、私は後者を使っています.現象の観察については,粒度が太く細い.たとえば、今日プログラムをデバッグするときは、プログラムの正確性を確認し、テストコードを作成する必要があります.このコードでは,error ratioを計算するために絶対値関数abs()を用いた.具体的な計算方法は以下の通りです.
(abs(real_value - expected_value)/expected_value) * 100%
検査の結果,error ratioには大きな誤差があることが分かった.そこで、私は細粒度の観測を行い、absを取り除き、error_を観測しました.ratioの正負値.観測結果はすべてreal_valueはexpectedより大きいvalue.これはreal_valueは計算ミスでその値を大きくしました.次に、ソースプログラムに計算real_が含まれていることを確認します.valueのコード.計算real_valueのコードには判断構造がありますが、まず判断構造の中で判断条件が正しいかどうか、特に境界値を確認します.正しい場合は、判断構造内のループ構造の境界値を表示します.境界値の判断については、境界値に関連するすべてのインスタンスをリストし、oneby oneは各インスタンスが正しい結果を得ることができるかどうかを検出することを経験しています.最後に,シーケンス文を検出し,シーケンス文では変数名の変更を忘れがちであるが,これは主にプログラミング時にコードを貼り付けることによるものである.
プログラミング時には、以下のように完全に同じコードが表示されないようにします.
for i in range(0, NUM_TOWER):
sum = 0
for k in range (0, APP_CATE):
for j in range(0, MINUTE):
sum += Matrix_Down[k][i][j]
err = (sum - Matrix_Sum_Down[i])/Matrix_Sum_Down[i]
output_1.writelines('down err ratio is: ' + str(err) + '
')
output_1.close()
for i in range(0, NUM_TOWER):
sum = 0
for k in range (0, APP_CATE):
for j in range(0, MINUTE):
sum += Matrix_Up[k][i][j]
err = (sum - Matrix_Sum_Up[i])/Matrix_Sum_Up[i]
output_2.writelines('up err ratio is: ' + str(err) + '
')
output_2.close()
このコードは統合でき、コードの長さを短縮し、コードの美しさを向上させ、読みやすさを高めるだけでなく、プログラムの拡張を容易にすることが重要です.