差が出るプログラミング

さて、素人のプログラムと玄人のプログラムでの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を越える場合も同様。
もうひとつ、関数内は粒度を合わせること。(リファクタリング参照)

ざっとこんなところ。
このへんを気をつければ、きれいなコードになりますよ