ソースを見やすくするために


・なぜきれいにするか

 ソースの書き方は人によっていろいろ異なります。 実行結果は同じな処理をしていてもソースは全く違うということもあります。 何をやっているかわかりやすいきれいなソースもあれば、本人以外(まれに本人にも)解読不能な汚いソースもあります。 プログラムの実行結果さえちゃんとしていればソースの方は別にきれいでも汚くても構わないのではと思うかもしれません。 しかし他人と一緒につくったりする時はそうは行きません。 ただでさえ他人の書いたソースというのは読みにくいものなのでできる限り見やすいソースを心がけるべきです。 また、時々自分でも分からなくなってしまうことがあります。 書いた時は分かっていても長期間にわたってプログラムを組んでいると最初の方に書いた部分を忘れてしまったりするからです。 というわけでどうしたらソースがきれいに書けるのか覚えておきましょう。

 なお、書く人のセンス次第だったりする部分もあるので絶対こうでなければいけないというわけでもありません。 とし曰く「宗教戦争」になってしまいます。

・改行、インデントのいれかた

 改行や空白、タブは全てコンパイルする時には無視されます。 あってもなくてもよい、つまり好きにいれられるということです。

 まずは改行についてから

int i;i=3;i++;printf("%d",i);
/////////////////////////////
int i;
i=3;
i++;
printf("%d",i);
/////////////////////////////
int i;

i=3;

i++;

printf("%d",i);
さあどれがきれいに見えますか? もちろんどれも実行結果は同じですしコンパイルでエラーが出たりはしません。 最初のは論外として問題は一行おきにするかしないかです。 びっしりつめて書くとごちゃごちゃして見にくいですが全部一行おきというのも無駄に長くなってしまい指定枚数にとどかなくて無理矢理字数稼ぎをしている身体運動科学のレポート課題みたいになってしまいます。 関係のある一連の処理はひとまとまりに書いて各まとまりの間は一行あけるというのがいいのではないでしょうか。

 次はインデントについてです。 インデントとは行の先頭に余白をいれて下げて書くことです。

int main(void)
{
	printf("TSG");

	return 0;
}
このように中カッコの中はインデントをいれて中カッコの対応関係が分かりやすいようにします。 インデントはキーボード左のTABというキーをおすことでいれられます。 (スペース×nでもできますが普通タブを使います。) 情報棟(Mule)の場合TABの機能がちょっと違うのですがよく知らないのでKaicho-にでも聞いてください。
 また、
int main(void){
	printf("TSG");

	return 0;
}
このように{を一つ前の行末にもってくる書き方もあります。 改行の時同様無駄に長くならずにすみます。 好きな方を使ってください。
 もう一つ。 ifやforなどで中カッコ内が一行の時は中カッコを省略できますがこの時もインデントをいれます。 もしくはifやforの行の後ろに書いてしまいます。
if(hp<=0)
	printf("あなたは死にました");
///////////////////////////////////////
if(hp<=0) printf("あなたは死にました");
中身が短い時は後ろに書いてしまい、長い時は次の行にインデントいりで書くのがよさそうです。

・コメント

 プログラム中//と書いた部分から行末までおよび/*と*/ではさまれた部分はコメントとなりコンパイル時に無視されます。 プログラムの説明を書くのに使います。

printf("%d",score); //得点表示
///////////////////////////////////////
int hantei(int x,int y);
/*
移動できるか判定する関数
引数…マリオの座標
返り値…0なら進めない、1なら進める
*/

・変数名

 変数名は中身を表すものしましょう。 ループ用や雑用以外はなるべく一文字の変数名はやめましょう。 名付け方に統一性を持たすことも大事です。

・プロラグムの構造

 同じような処理を繰り返す場合はループや関数を使うなど構造自体を変えることでもきれいにできます。 特に同じような行の羅列は汚く見えやすいので工夫してください。例えば

if(a==0) return 0;
if(a==1) return 1;
if(a==2) return 0;
if(a==3) return 1;
if(a==4) return 1;
if(a==5) return 1;
if(a==6) return 0;
if(a==7) return 0;
if(a==8) return 1;
if(a==9) return 0;
こんなのは
int table[10]={0,1,0,1,1,1,0,0,1,0};

return table[a];
こうやってください。