コラム22. :コーディングルール
プログラミングにはルールが必要
C言語に限らず、プログラムを作成するときは、見やすく、わかりやすいものを作ることが必要となります。それは、複数の人間が携わる場合も、一人でプログラミングを行う場合も関係ありません。
そこで必要のが、コーディングルール(Coding Rule)です。これは、プログラムのソースコードを書くときの規則・ガイドラインを指します。人によっては、プログラミング作法などという言い方をしたりもします。
コーディングルールがあれば、プログラマが参加するプロジェクトにおいて、プログラミング品質を均等にすることができます。また、一人で開発している場合でも、デバッグが容易になったり、メンテナンスをしやすくなるという利点があります。
コーディングルールとはどのようなものか?
では、コーディングルールとは一体どのようなものなのでしょうか?具体的には、大きく分けて以下の3つの要素から構成されている例が多いようです。
- 命名規約
- コーディングスタイル
- 禁止事項
コーディングルールには絶対的なルールはなく、言語による違いもありますし、それを適用する会社・組織・チームによって異なるのが一般的ですが、ここではそれらのルールについて代表的なものをいくつか紹介していくことにしましょう。
命名規則
命名規則とは、変数や関数、さらにはソースコードなどの名前を付けるさいのルールのことを指します。変数名は小文字ではじめる、とか、定数は全て大文字、区切りには"_"(アンダーバー)を用いる、などといったことが一般的です。
C言語のコーディングルールとしてよく知られているものに、ハンガリアン記法と呼ばれるものがあります。名称は考案者チャールズ・シモニーがハンガリー出身であることに由来すると言われています。
このルールでは、変数名やクラス名などの識別子に特別な接頭文字ないし接尾文字をつけるというもので、例えば文字列には、頭に接頭辞「s」をつけて、sNameとする、とか、グローバル変数の接頭辞を「g_」として、g_nPowerなどといった命名にする、といったものです。
かつて、この記法は、マイクロソフトがMFCというライブラリを使っていた時は推奨していましたが、その後一転して同社はこの記法を非推奨にしました。このことからもわかるように、状況によってルールは変わるのです。
コーディングスタイル
コーディングスタイルとは、文字通りコーディングのスタイル、つまりプログラムの記法に関するものです。これは言語やチームによってずいぶん異なります。
しかし、言語の違いを超えた割合普遍的なルールとして、「インデントは半角スペース4文字分とし、タブを使用する」とか、「変数は宣言と同時に初期化する」といったものが、あります。
これらのルールは、ソースコードの可読性をあげ、守ることによってソースコードのメンテナンスがしやすくなります。
禁止事項
前述2つのルールも大事なのですが、特に気を付けなくてはならないのが、この禁止事項です。文字通り、「やってはいけないこと」で、それによりプログラムの可読性を下げたり、プロジェクトを混乱させることを防ぐためのものです。
例を挙げると、以下のようなものが比較的普遍的なものとして挙げられます。
- ハンガリアン記法は使用しない
- インクルード、多重インクルード以外の目的でプリプロセッサを基本的に使用しない
- gotoは特別な理由がない限り使用しない
とくに、「goto」は、プログラムの流れを著しくわかりにくいものにするため、言語仕様として利用できても、多くのコーディングルールでは厳にこれを使用することを禁止しています。