バッドノウハウ
初心者に正しいことを教えるのが難しいのなら、とりあえずは「これはダメ」な事を教える方が簡単に思えてきたので、ちょくちょくと書いてみる。
1. インデントの無いプログラム
ダメな例
#include<stdio.h> int main(void){ int i,j; for(i=1;i<10;i++){ for(j=1;j<10;j++) printf("%d ", i*j); printf("\n"); } return 0; }
良い例
#include<stdio.h> int main(void){ int i,j; for(i=1;i<10;i++){ for(j=1;j<10;j++) printf("%d ", i*j); printf("\n"); } return 0; }
理由
単純に見づらいため。
タブとスペース、どっちがいいかなんてどうでも良いので*1必ずインデントは付けること。
2.変数名が適当なプログラム
ダメな例
- a,b,c,...と続く変数
- hoge1, hoge2, などの連番
- flagなど、抽象的な内容の名前
良い例
- 一目見て何の役割の変数であるかが分かる名称
- 本当に連番が必要なら配列化する
- ローカル変数はそこまで長くなくても良い*2
- flagはisXXXの形で何が真であるかをわかりやすくすればよい
3. 意味の無いコメント
悪い例
/* おまじない */ #include<stdio.h> /* メイン関数 */ int main(void){ /* ローカル変数。ループに使う */ int i,j; /* 1から10までループ */ for(i=1;i<10;i++){ /* 1から10までループ */ for(j=1;j<10;j++) printf("%d ", i*j); /* jのループが終わったとき改行 */ printf("\n"); }/* end for(i) */ /* 関数が成功したので0を返す */ return 0; }
良い例
/* (必要であれば)作者名、プログラムの概要 */ #include<stdio.h> /* 九九の表を標準出力するプログラム */ int main(void){ int i,j; for(i=1;i<10;i++){ for(j=1;j<10;j++){ printf("%d ", i*j); } printf("\n"); } return 0; }
理由
いくらコメントを書こうが、全て無視される。
オマケに、コメントとプログラムの内容が一致している保証は全くない。
具体的な内容はプログラムに書き、概要や、本当に分かりづらいところにのみコメントを入れるべきである。
変数名を利用することでコメントを除去できる場合もある。
コメントとプログラムが同じ事を述べることは保証されないので、可能な限りコメントは書かない方がよい。その分、わかりやすいプログラミングを心がけること。