差が出るプログラミング
さて、素人のプログラムと玄人のプログラムでのDMD(違いをもたらす違い)はなんでしょう?
ちょっとだけ考察(というのか?)してみます。
1.変数定義のDMD
素人
int a, b;
玄人
int a = 0;
int b = 0;
変数名は気にしないで!
とりあえずここで言いたいのは、変数を複数定義するときは、下のやり方で書いた方がいいよ。ってこと。
まぁ、理由は好きだからかな?(笑
あとは、複数定義すると何があるか一瞥できないってのもある。
忘れちゃいけないが、宣言時初期化。 理由がない限りやるべし。
変数名もちゃんとしたのを付けましょう。
2.リソース管理のDMD
というか、これは基本ね。
まず、開いたものは逆順に閉じる。
絶対に「閉じないで終了する」というケースを作らない。
たとえば、こんなん
FILE* readFile = 0;
FILE* writeFile = 0;
readFile = fopen("filename", "r");
if (0 == reeadFile) {
return;
}
writeFile = fopen("filename", "w");
if (0 == writeFile) {
return;
}
// 処理
fclose(writeFile);
fclose(readFile);
これには、バグがあります。どこでしょうか?
答え:
writeFileのオープンのみ失敗した場合、readFileがcloseされない。
よって、if (0 == writeFile)の中は
fclose(readFile);
return;
にするのが正。
3.関数定義のDMD
これは、Javaをやってるからかもしれない。
関数はネストは3段が限界。
それ以上になる場合、「必ず」関数を作成し、回避すること。
また、1関数の行数が20を越える場合も同様。
もうひとつ、関数内は粒度を合わせること。(リファクタリング参照)
ざっとこんなところ。
このへんを気をつければ、きれいなコードになりますよ