■見直したいコーディング規約
・char/short/int/long を直接記述する事禁止する
・数値を直接記述すること禁止、必ずマクロにする事
・変数の宣言は関数の先頭でまとめて行い別の行で全てゼロで一律もれなく初期化する事
・実績があり安定しているC89仕様で記述する事C99仕様の利用禁止
・誰にでも分る十分に長い名前を変数に付ける事
・誰にでも分るようにコメントは十分に付ける事
・型が明確に分るようにキャストで型を明示する事
・代入と比較を間違わないよう定数を左に書く事(ヨーダ記法を使う事)
・変数の型が分るように接頭語を付ける事(システムハンガリアン記法を使うこと)
・関数の出口は必ず一つ。エラーが発生しても 早期リターン 禁止。
■簡単なプログラムの例
#include <stdio.h>
static char *cat[] ={
"にゃん",
"meows",
"喵喵",
NULL
};
int main(void)
{
for(int i = 0 ; cat[i] != NULL ; i++){
printf("%s\n",cat[i]);
}
}
職業プログラマなら1秒で理解できる
この簡単なプログラムが、
杓子定規のコーディングルールに従うと、、、
■規約を守って難解になった例
#include <stdio.h>
typedef unsigned char U1;
typedef signed int S4;
typedef void VD;
#define ZERO 0U
#define ONE 1U
#define TWO 2U
#define THREE 3U
#define FOUR 4U
#define NOT_ERROR 0
static U1 *cat[FOUR] ={
(U1 *)"にゃん",
(U1 *)"meows",
(U1 *)"喵喵",
NULL
};
S4 main(VD)
{
/* 変数宣言 */
U1 u1_t_loopcounter ;
/* 変数の初期化 */
u1_t_loopcounter = (U1)ZERO ;
for(u1_t_loopcounter = (U1)ZERO ;
(U1 *)NULL != cat[u1_t_loopcounter];
++u1_t_loopcounter){ //カウンターに1を加える
printf("%s\n",(char *)cat[u1_t_loopcounter]);
}
return (S4)NOT_ERROR ;
}