品質
1.機能性
2.効率性
3.信頼性
4.保守性・移植性
良いコード
1.わかりやすい論理構造
2.わかりやすい論理式
3.表現の一貫性
4.一貫したコーディングスタイルとコーディング規約
5.シンプルなプログラム
良いコードーー信頼性についての例
1.ごみによる誤動作を防ぐ
i.領域の初期化
ii.配列での範囲外添え字使用によるデータ領域の破壊
#define ARRAY_MAX (1024)
short int i, iarray[ARRAY_MAX];
for (i = 0; i < (sizeof(iarray)/sizeof(iarray[0])); i++){
iarray[i]= 0;
}
iii.長すぎる文字列の文字列変数代入によるデータ領域の破壊
#define STR_SIZE (8)
#define EOS ('\0')
char cbuff[STR_SIZE];
strncpy(cbuff,"abcdefghij",STR_SIZE - 1);
cbuff[STR_SIZE -1] = EOS;
2i.データ精度の不足による不具合を防ぐ
3i.資源の食いつぶしを防ぐ --メモリリーク
malloc -- free
4i.資源の食いつぶしを防ぐ --無限ループ
5i.領域のオーバーフローをさせない
バッファオーバーフロー
スタックオーバーフロー
6i.例外に対応する
良いコードーー効率性についての例
1.CPUクロックを無駄に使わない。
2. CPU実行テスト制約を意識する
除算命令 分岐命令 メモリ操作命令
3.限りあるメモリ資源を上手に活用する
良いコードーー保守性・移植性についての例
読みやすさ
不具合は、以下の要領で記録します。
誰が
いつ
どこで
何に対して
どのような手順によって
どのような内容のものを発見したが
修正についても、以下の点を記録し
誰か
いつ
何にに対して
どのような修正を加えたのか