>>・ 可読性が高い
>とは、どの様なのを指すかが、凄く曖昧な気がするのですが、どうでしょうか?
たしかに曖昧です。
実際、その判断基準は個々によって異なります。
でも、大まかに複数の人から見て、明らかに読めないとか、ありますよね。
http://www0.us.ioccc.org/years.htmlとか。
そういう極端な例はともかくとして、ぱっと見判りづらい、混乱させるようなのとかは
避けましょう、ということです。
例えば、三項演算子とかなんか旨く使えば便利ですが、それが1つの式の中に10も20も出てきたら
もう読めません・・・。
あと時々気付かずにやってしまうのが
[color=#d0d0ff" face="monospace]void sample(void)
{
int n;
if(....)
{
int n;
}
}[/color]
のように異なるスコープで同じ変数名を宣言してしまうと、書いている人はともかく、
読む人は結構混乱します。
>>・ 保守性が高い
>説明お願いできませんか?
保守性とは機能の変更や追加、パフォーマンスの改善、不具合の修正などにおいて
変更の容易さを指します。
これが高いということは簡単に修正ができることを意味しています。
これについては書き始めたらもう掲示板では語り尽くせないほど多岐渡る話になるのですが、
よくある話としては「1行修正を入れたらそれに伴って複数の行に手を入れなければならない」ような
コードは保守性が悪い、と言うことができると思います。
マジックナンバーやマジックストリングなんかは真っ先に潰すべきでしょうし、
同じ処理が何度も現れたら関数化してまとめるとかは基本的な事項となります。
他にも意外なケースとして例えば、switch-caseで以下のように書く人がいたとしましょう。
[color=#d0d0ff" face="monospace]
switch(mode)
{
case MODE_EXTREAM: a++;
break;
case MODE_ALT: a+=2;
break;
case MODE_DOUBLE_TIMES: a*=4;
break;
}[/color]
ここで、case文に MODE_AAAAAAAAAAAAAAAAAAAAAAAを追加したいと思ったとき、
[color=#d0d0ff" face="monospace]switch(mode)
{
case MODE_EXTREAM: a++;
break;
case MODE_ALT: a+=2;
break;
case MODE_DOUBLE_TIMES: a*=4;
break;
case MODE_AAAAAAAAAAAAAAAAAAAAAAA: a*=8;
break;
}[/color]
switch-caseの全行に対してスペースなりタブなりを入れて、a++とか breakの位置を
変更しなければなりません。
見た目はいいんですけど、数が多かったり追加・削除の頻度が高いとこれは結構面倒です。
>それは、メモ帳などに記載して、やっているのか、
>記憶を頼りにしているのかどちらなのでしょうか?
記憶というか、習性というか。
平日は一日だいたい最低4時間、多いときになると十数時間はプログラムしてるので、
細かなルールを意識することなくもう惰性で書いてます。
>void main(){
> printf("・・・・・"); //・・・・・・・・・・。
> printf("…"); //・・・・
>}
>は入ると思われますか?
たしかに // の位置が2行目と3行目でずれていますが、
論理構造は合っているので、ここで言っているインデントの問題には該当しません
インデントがおかしいというのはそのプログラムの論理構造に対して
おかしなインデントというものを指します。
例えば
[color=#d0d0ff" face="monospace] for(i=0; i<max; ++i)
count++;
printf("count = %d\n", count);
if(count == max - 1){
printf("abcdef\n");
}[/color]
とか。
これは printfが count++と同じ階層にあるので、for文の対象になっている、と
勘違いさせやすいインデントになっています。
>なんと、出来る限り横に書いていくものだと思っていました。^^;
見やすさの問題で、例えば、
[color=#d0d0ff" face="monospace] if(note == 1 || note == 4 || note == 6 || note == 9 || note == 11 || key == 1 || key == 4 || key == 6 || key == 9 || key == 11)[/color]
とあるよりも
[color=#d0d0ff" face="monospace] if(note == 1 || note == 4 || note == 6 || note == 9 || note == 11
|| key == 1 || key == 4 || key == 6 || key == 9 || key == 11)[/color]
のように(if文だけに限らず)適度に改行を入れた方が見やすくなるかな、と。
あとは横に長いと印刷したときに見苦しくなるというのもありますね。