コーディング規約、字下げ、ネストの深さ、命名規則、使用禁止命令、コードエディタ、コード補完、シンタックスハイライト、静的解析ツール、デバッガ、構文チェッカ、コードオーディタ、モジュールインタフェースチェックツール、メトリクス計測、メモリダンプ、静的ダンプ、動的解析ツール、トレーサ、インスペクタ、スナップショット、動的ダンプ、アサーションチェッカ
コーディング規約とは、プログラムの作成における字下げや変数命名などに関する規約のことです。
コーディングはコンピュータへの処理命令作成であるとともに、他人に「何をどう処理するのか」を示す文書作成であることを認識することが必要です。
現在のプログラミング言語文法は柔軟性に優れています。反面、人により異なる習慣や考え方により、多様な表現をすることができます。そのため、自分の流儀と異なる他人のプログラムは、違和感があり読みにくいことがあります。
プログラムは、完成するまでに多様なチェックが行われます、また、システムを取り巻く環境変化は激しく、それに対処するためにプログラムの改訂機会は増大しています。
このように、プログラムには、作成者だけでなく、チェックをする人、機能追加や変更をする人など多くの人が関係しています。それらの関係者が誤解なくプログラムを理解する必要があります。
それには、標準的なプログラムの書き方のルール、すなわち、コーディング規約を策定することが望まれます。
プログラムの文の書き出し位置を、何文字分か右の方へ下げることです。
データ構造や制御構造のネスト(入れ子)を半角2文字あるいは4文字字下げします。
左のコードより、右のコードのほうが、何をしているかがわかりやすいでしょう。
字下げしない 字下げする
var x = 0; var x = 0;
var y = 0; var y = 0;
for (var i=0; i<=10, i++) { for (var i=0; i<=10, i++) {
if (i <= 5) { if (i <= 5) {
x = x + 1; x = x + 1;
y = y - 1: y = y - 1:
} }
else { else {
x = x - 2; x = x - 2;
y = y + 2; y = y + 2;
} }
} }
var z = x + y; var z = x + y;
ネストを { } ではなく 字下げで示す言語もあります。Python や YAML など。
ネストを字下げすると読みやすくなりますが、ネストが何重にも深くなると理解しにくくなります。
それで、深いネストの部分を関数などにして回避するのが適切です。
深いネスト ネストの回避
if (a < 10) { if (a < 10) { function func(x,c,d) {
x = x + 1; x = x + 1; if (c < 10) {
if (b < 10) { if (b < 10) { x = x + 3;
x = x + 2; x = x +2; if (d < 10) {
if (c < 10) { func (x, c, d); x = x + 4;
x = x + 3; } }
if (d < 10) { } }
x = x + 4;} }
}
}
}
}
プログラマにより「得意先」、日本語を避けて「customer」、文字数を減らして「c」などと勝手に変数名を付けたプログラムは、他の人が読むには該当プログラム専用辞書が必要になります。変数名の統一は、理解しやすいコーディングのための最大要件です。
規格は関係者全員が守らなければ効果はありません。そのため、次のような事項に留意する必要があります。
サブルーチンや標準パターンを利用することは、プログラムの部品化と再利用の考えかたです。この考え方により、品質の良いプログラムを少ないステップ数で記述することができます。
サブルーチンや標準パターンは、言語ライブラリとして提供されるもの、市販しているものもありますが、自作することもできます。
広範囲に利用でき、利用勝手のよいサブルーチンにするための指導原理として、モジュール分割があります。
標準パターンを作るには、対象業務で行う処理を体系化する必要があり、その指導原理に構造化設計があります。
コーディング規約を拡大して、オーソライズしたサブルーチンや標準パターンの利用を規約として組み込むこともあります。