コーディング規約
コーディング規約とは
ソフトウェア開発の性質上,一度開発したシステムは何度も機能アップを繰り返す傾向が強く,高い保守性が必要となる.とりわけ,複数人が関わるような大規模な開発では,各個人がバラバラにプログラミングしていたのでは,ソースコードの均質化が図れずに結果として保守性を保つことができなくなる.
高い保守性を保つためには,ソースコードが
ことが必要である.
具体的には,保守性の高いコードとは,
- 可読性に優れている.また,コメントが適切に記載されている.
- 変数などのネーミングが適切である.
- ロジックがシンプルであり,トリッキーなコードがない.
- 無駄なコードや重複が無い.
- インテーフェイスが直感的である.
などの特徴を持つものである.
こうした条件を満たすコードを作成するためには,何らかの「品質基準」に従ってプログラミングする必要がある.このソースコードの品質基準が「コーディング規約(コーディング標準)」である.
- コーディング規約により
- 重要でないことに関するくだらない議論によってチームの気が散ることがなくなり,最大スピードで作業を行うことができる.
- 他者のノウハウや経験をうまく取り入れることができる.
- コー ディング規約がないと
- コードのリファクタリングが難しくなる.
- 必要なときにペアを変更したり,迅速に作業を進めていくことが難しくなる.
- コーディング規約の目標
- チームの中で誰がどのコードを書いたのか区別がつかなくする.
- コードが明確に情報を伝えることができるようにするための指針を提供する.
- コーディング規約はまず単純なものから 始め,その後チームの経験に基づいて徐々に発展させていく.
コーディング規約の項目
コーディング規約の項目には,次のようなものがある.
- 見易さ
インデントや中括弧の位置などソースの見易さを統一する.いわゆる,コーディングスタイルの統一である.
これは,個人の好みもありどれが正解というものではないが,1つのプロジェクトでは統一すべきものである.これらは,コード整形ツール (indentなど)を使えば,ある程度一括して変更可能なものである.
- 保守性の向上
定数マクロ,変数名の付け方,コメントなどは,バグの解析や機能改造など後でソースを見直すときの生産性に大きく影響する.
goto文の制限など,論理が複雑にならないようにする規約もある.
- 移植性の向上
将来,他のOSにも移植するような場合,OSに依存するようなコードは書かない,あるいは#ifdefなどでコードを切り分けておくなどの対処が必要である.これにより,移植時の作業が効率化される.
- コメントの作法
コメントの書き方には,一般的な原則といったものがある.
- コメントは何をどのように実現しようとしているのか,パラメータは何を意味するのか,どのグローバル変数を参照し変更するのか,などのコードを理解する上で参考になる情報を記載する.
- コードから明らかなことは書かないこと.その情報は冗長でもあり,修正などでコードが変われば意味を失う可能性が高い.コードと矛盾するコメントは無い方が良い.
- 「合計を n で割る」のように処理手順ではなく,「平均の算出」のように何をしているのかを記述する.
- 見苦しいコードやトリッキーなコードを書く場合,これを正当化するコメントを書く(性能向上のためなど).本来,保守性を考慮した読み易いコードが望ましい.
- 動作上に何らかの制限や条件がある場合(他のマシン環境やOSでは動かない可能性など),それを明確にする.あるいは,将来修正または改善すべき箇所として明記する.
これらのコーディング規約の中には,「見易さ」のように好みにより変わるものと,「移植性の向上」のように定石として一般的に受け入れられるものがある.「保守性の向上」は定石的な面と好みの面があり中間的である.
C言語におけるプログラムの移植性については,プログラムの移植性を参照.また,C言語のANSIライブラリ関数の移植性については,ANSIライブラリ関数の移植性を参照.
コーディング規約の例
コーディング規約の例として,C言語に関する代表的なコーディングスタイルを示す.
- GNU
Emacs自体とGNU関連のプログラムのCコードに使われるスタイル
- K&R
古典的教科書 Kernighan & Richie著「The C Programing Language」のスタイル
- BSD
UNIX の BSD バージョンのコードに使われるスタイル
- Stroustrup
Bjarne Stroutstrup著「The C++ Programing Language」のC++コーディングスタイル
- Whitesmith
Whitesmith社のC/C++コンパイラのドキュメントで使われるスタイル
- Indian Hill C Style and Coding Standards
日本語訳:
プログラム言語 C の推奨されるスタイルとコーディング規範