プログラマyasuhoの隠れ家

某ソフトウェア企業に勤務するおじさんプログラマyasuhoです

バグ修正をする上で心掛けておきたいこと


バグ修正において最も大切なことはドキュメントを残すということにつきると思います。プログラムは動作環境によって様々な問題が発生します。また、他の要因により不本意な修正をすることも多いでしょう。そういった修正により、プログラムはだんだん複雑に、より変更の難しいものになっていきます。その時1ラインでも情報を残す。そういった習慣が大切なのではないでしょうか。

バグが発生したら


プログラマなら誰しもバグ修正をした経験があるでしょう。ソフトウェアが完全になることはありません。プログラムを人間が作っている限り、これは避けられないことなのかもしれません。


バグを修正する時は、もう問題が発生しないようにと考えて修正します。しかし、実際には予期せぬ新たな問題が発生してしまったり、最悪の場合、問題そのものが解決しない場合もあります。


このような事態を避けるには、どのようなことを心掛ければいいのでしょうか。この記事では主にプログラマが心掛けたいことについて、考えてみたいと思います。

修正の容易なプログラム作り


まずはバグ修正がしやすいようなプログラム作成方法について考えてみます。

前バージョンの回避コードを正しく修正


ソフトウェアがバージョンアップである場合は、バグの回避コードを正しい形にしましょう。


リリース後の修正は大規模な改変が難しく、何らかの回避コードが埋め込まれていることが多いものです。こういった、ちょっとトリッキーな変更を正すことはメンテナンスを楽にします。ソースコードにコメントとして残すのはもちろん、可能であればこういった修正のリストを作っておくとよいでしょう。

コンポーネントの独立性を高める


コンポーネントの関連性が少ないほど、コードの変更は楽になります。


これは言うまでもありませんね。GlobalやPublic変数、その他関連するモジュールが多いと、コードの変更部分が多くなり、検証も難しくなります。コードの可視性向上の点からも、プログラムの独立性は高めておくべきでしょう。

実装は単純に


コードが単純であればあるほど、変更部分が見えやすくなります。


たとえそれを作った本人であっても、時間がたてば内容を忘れてしまうものです。シンプルなコードは理解を容易にします。コードの拡張性も大切ですが、何よりも分かりやすく書くことが重要だと私は考えます。

よいコードを参考にする


コードを多く読んで、よいと思われるところはどんどんマネしましょう。


優秀と言われる、それも長く安定して使われているプログラムのソースコードには、多くのノウハウが詰まっているものです。これらを多く読み、自分のものにしていくことには大きな意味があります。

それでもバグが出てしまったら


どんなに気をつけていても、バグは発生するものです。当然それらは修正されるわけですが、プログラムをよりよくするための修正方法があると思います。

本当の問題を見極める


修正コードを作る前に、本当の問題が何かを正しく見極めましょう。


当たり前のことだと思われるかもしれませんが、本質的な問題解決を行っていないことは意外と多いのです。現象だけ見て修正しても、別のケースでは解決できていないかもしれません。


様々な事情から対処療法的な変更をしなくてはならない場合もあります。その場合は、情報をコメントや資料で残しておくべきでしょう。

修正が他のルートに影響を及ぼさないように


これは特にリリース後のプログラムに言えることです。そういった場合、テスト時間があまり取れないことも多いです。修正は特定のルートに絞るのが無難です。変更の元となったバグ情報へのリンクがあると、後に役立ちます。

性能を落とさないよう注意


これもリリース後のプログラムに言えることです。バグを直すことに着目しすぎるあまり、性能への配慮がおろそかになることがあります。どうかお忘れなく。


時には性能劣化が避けられないこともあるでしょう。その場合はあらかじめ利用者に説明しておくと効果的です。後で発覚するとかなり面倒なことになりますよ。:)

確認テスト手順の確立


修正の確認というのは、なかなかやっかいなものです。問題の確認だけでなく、他の部分に影響がないか検証しなくてはなりません。そういった時、プログラムの動作を検証するテスト手順が確立されていると、作業がしやすいですよね。


タイミングに起因する問題など、修正されたかどうかの確認すら難しいケースもあります。そのような場合はケースバイケースになりますが、連続運転や負荷テストの環境があると検証の助けになるでしょう。

バグ修正において最も大切なこと


バグ修正において最も大切なことはドキュメントを残すということにつきると思います。


ここで言うドキュメントとは、文章ファイルだけでなく、ソースコードのコメント、バグ情報データベースの類、などなど、バグとその修正方法に関する全ての情報を示しています。プログラムの変更を難しくしている理由の一つに、バグと変更の理由が不明、ということにあるのではないかと思うのです。


プログラムは動作環境によって様々な問題が発生します。また、他の要因により不本意な修正をすることも多いでしょう。そういった修正により、プログラムはだんだん複雑に、より変更の難しいものになっていきます。その時1ラインでも情報を残す。そういった習慣が大切なのではないでしょうか。




過去の関連記事:
yasuhoの隠れ家 - バグを防ぐためにプログラマが出来ること