ソースコードを読み易くするため, 適切なインデント(行頭の空白)を整えること. 本授業で推奨するインデントの作法:
#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 「この簡単な原則すら守れない → 正しいコードを書くことなんて無理」 という考えから, インデントの乱れは減点対象となります.