ソースコードを読み易くするため, 適切なインデント(行頭の空白)を整えること. 本授業で推奨するインデントの作法:
#include <...>
#define ...
int main(...)
{ // 関数のブロック開始 "{" は行の先頭に
int ... // ブロック開始直後でインデント増加(右へ)
... // 同じブロック内ではインデントは一定
while (...) { // 関数以外のブロック開始 "{" は行の末尾に
... // ブロック開始直後でインデント増加...
...
if (...) { // 同上
...
...
} // ブロック終了 "}" でインデント減少(左へ)
...
...
} // 同上
...
...
switch (...) {
case ...: // case ラベルの行では例外的にインデント減少.末尾はコロン「:」
... // ブロック開始直後ではインデント増加
break;
default: // default ラベルも然り.
...
break;
}
if (...) goto ERROR; // goto文内のラベルの末尾はセミコロン「;」
...
...
return (0);
ERROR: // goto ラベルの行でも例外的にインデント減少
...
return (1);
}
C ソースコードのインデント方法には, 他にもさまざまな流儀があります. 教科書でも微妙に別の流儀ですし, 上と同じじゃなきゃダメというものではありませんが...
読みやすいコードを書くため (= 間違いを直しやすくし,楽に完成させるため), 次の原則については厳守すること!!
本授業では,標準的なエディタ(Vim,nano,gedit,等)の Tab 文字を推奨. なお,Emacs の Tab 文字 (自動インデント機能)は標準状態では腐って(Tab と Space が混在して)いる. (ただし,設定ファイル次第で改善可能.)
ただし,switch-case および goto の ラベルだけは例外.
そして,ラベルの末尾にはコロン「:」を付ける. セミコロン「;」ではない. (とはいえ,goto文内にあるラベルの末尾はセミコロン.)
なお,本科目(担当教員による全科目)のレポート評価では, 「インデントが乱れている → 論理構造が整理できていない → 間違いのある可能性が高い」 AND 「この簡単な原則すら守れない → 正しいコードを書くことなんて無理」 という考えから, インデントの乱れは減点対象となります.