社会人1年目のメモが見つかったので転載。
基本C言語の話なんだけど他でも流用できるかも。
本当に基本的なことだけですが
規約(コンベンション)を守ること
ソースコードで、コンベンション(いわば決まりごと)は守りましょう。
少なくとも、コードのルールの一貫性を持つようにしましょう。
assert()を使おう!!
- 条件が真になるときはassert()をつかう
- 引数のチェック
- 仮定の有効性のチェック
- ありえない状態(switch-case文のdefault:は実行されないはずなのに、実行される…等)をチェック
ステップ実行をしよう
開発環境のステップ実行は便利な機能なので使いましょう。
Visual C++にもついてます。
プログラムがどのような流れで実行されているかがよくわかります。
- 変数のチェック
- 関数がきちんと使われているかチェックする
ブレークポイントも活用しましょう。
ブレイクポイントをつけると、プログラムの実行がそこで止まります。
それから、変数の値を変えて、エラー処理がきちんと行われるかもチェックしましょう。
関数について
-
関数の戻り値にエラーコードを埋めてはならない
-
正しいときはその値、エラーの時はNULL、EOF、-1…等(<=デバッグしずらくなる)
-
多目的な関数をつくってはいけない
- 異なる機能ごとに分割すべき
構造体の初期化処理
- 構造体の初期化を忘れない。また、ユーザが変数の内容を意識しないように設計する場合、きちんと初期化処理を関数化する
マジックナンバー(意味のわからない数字)をつかわない
- 意味のある数字で区別するように、enumか#defineを使う
ユニットテストは成功と失敗は自明でなければならない
- 文字列を返す関数をテストするのに、そのままコンソール上に出力してチェックしていたが、きちんと期待する文字列と比較を行い、assert()をつかって真になるようにしなくてはならない。
- テストはできる限り自動化する
- 恒真のときはassert()を使う
ソースコードを読む
ソースコードを読むためのツール
- GNU global
http://www.gnu.org/software/global/download.html - globalの使い方
http://uguisu.skr.jp/Windows/gtags.html
バグ報告の書き方
- 具体的に・正確に
- エラーが起きた状況を性格に再現できるようにする
- 環境もきちんと報告する
- エラーメッセージはメモする
- 症状を報告する。自分の診断と混合させない(余計な情報になる可能性があるため)
## バグ報告についてのリンク
- 効果的にバグを報告するには
http://www.unixuser.org/~ueno/bugs-ja.html - バグ報告ガイドライン(Mozilla)
http://www.mozilla-japan.org/quality/bug-writing-guidelines.html