![]() |
コーディング規約は,プロジェクト・メンバーに,プログラミングのルールを認識してもらうために作成する文書である。通常,ソフトウエア・アーキテクトがまとめる。コーディング規約に多数のルールを詰め込むと,プログラマはそのすべてを頭に入れておくことが難しくなる。結局,遵守されなくなってしまうので注意が必要だ。
既存の規約を実情に合わせて改変する
コーディング規約の作成は,地味で手間のかかる作業である。プロジェクトごとに,ゼロから作成する必要はない。他プロジェクトで使用されている既存のコーディング規約をベースに,使用するプラットフォームや開発言語に合わせて改変すればよいだろう。
コーディング規約に記述する項目は,一般には「コーディング・スタイルやコメント書式」「識別子のネーミング」「プログラミングの禁止事項」「慣例やTIPS」の四つである。
このうち,「コーディング・スタイルやコメント書式」と「識別子のネーミング」について規約を設ける目的は,ソースコードの可読性向上にある。ソースコードの可読性が高いと,プログラムを作成した当人,レビュー担当者ともにバグを見つけやすくなる。また,可読性が高いと,ソースコードが他のプログラマによって保守される際,作業効率が高まる。
「プログラミングの禁止事項」を記すのは,プログラマによっては,危険であるとの認識を持たず,不適切な実装をしてしまうことがあるからだ。そうしたプログラマに認識を改めてもらうよう,コーディング規約では使用するプラットフォームや開発言語の特性を考慮した上で,危ない実装を示す。 「慣例やTIPS」を示すのは,アルゴリズムの差異などによる処理効率の違いをプログラマに認識させて,処理効率の高いソースコードが作られるようにするためである(図1)。
【悪い例】ループの条件式でメソッドを呼び出す。性能の問題が起きがちなので,好ましくない。
List list = new ArrayList();
・・・
for(int index = 0; index < list.size(); index++){ // 条件部でsizeメソッドを毎回呼び出している!
・・・
}
【良い例】事前にsize()を呼び出し,それをローカル変数に格納し,そのローカル変数を参照する。
List list = new ArrayList();
・・・
int size = list.size();
for(int index = 0; index < size; index++){
・・・
}
必要十分な内容を分かりやすく示す
こうした内容をすべて盛り込んでいくと,コーディング規約の量が増え,印刷した際に分厚くなりがちである。完成度の高いコーディング規約とは,必要十分な内容を分かりやすく示したものであり,必要以上に詳細で分厚いものは好ましくない。
プログラマが実装作業をする際は,設計書を参照してIDE(統合開発環境)などのツールと向かい合う。その作業中に,コーディング規約を参照することはない。プログラマがコーディング規約を読むのは,実装作業を始める前段階であり,そのときにルールを頭に入れてコーディング作業に臨む。繰り返しになるが,コーディング規約が分厚いと覚え切れず,禁止事項など重要なルールを守り切れなくなる。それでは,せっかくコーディング規約を作っても,意味がなくなってしまう。
NTTデータ 法人システム事業本部 モバイルビジネス事業部
(シニアITスペシャリスト ソフトウェアアーキテクチャ)