TOP設計・移行・活用> はじめに
Javaコーディング規約
Javaコーディング規約

第10回:制御構造に関する規約
著者: 電通国際情報サービス  高安 厚思、東田 健宏
レッドフォックス  石井 宏和
   2005/12/21
1   2  3  4  次のページ
はじめに

   長いもので、もう本連載も10回目を迎えました。今回はコーディング規約の中でも制御構造に関する規約(3.16 制御構造)を説明します。今回説明する規約は、大きく分けると以下の2つがあります。
  • Java言語特有の制御構造に関する規約
  • Java言語特有ではない制御構造に関する規約

表1:制御構造に関する規約の分類

   制御構造を意味する制御文はほとんどの言語でサポートされています。そのため今回の規約はJavaに限らずプログラムを書く上で共通した部分も多く、プログラマにとっては基礎の部分となりますので、規約の意図をしっかりと理解するようにしてください。

本連載で紹介する規約に関しては、規約名のみを記述しています。規約そのものは、以下のURLからダウンロードして確認してください。
http://www.objectclub.jp/community/codingstandard/JavaCodingStandard2004.pdf


制御構造とは

   まず規約の説明をする前に、「制御構造とは」ということを簡単に確認してみましょう。プログラムは以下の基本的な3つの構造であらわすことができます。

順次構造
順序通りに処理をする構造
分岐構造
条件に基づいて処理をする構造
繰り返し構造
ある条件を満たすまで繰り返し処理をする構造

表2:基本的なプログラムの構造

   表2を制御構造といい、これをプログラム上で表現するための文を「制御文」といいます。

   制御構造について簡単に復習したところで、以下具体的なコーディング規約の内容を説明します。今回あげる規約には、Java特有でないものとJava特有なものがありますので、注意してください。


"{}"の扱いについて(C_CTR001、C_CTR002)

   制御文の"{}"は処理ステートメントが1行で完結することができる場合、省略することが可能です。しかし"{}"を省略してしまうと、処理ステートメントがどこで完結しているかがわかりにくくなります。

   また、処理ステートメントがない"{}"ブロックも同様に必要ありませんので、記述しないようにすべきです。

"{}"を省略している悪い例
if ( isMax() )
     // isMax()がtrueの場合実行される。
     System.out.println("最大値");
     // if制御外のため、条件分にかかわらず実行される。
     System.out.println("です。");

ステートメントがないのに"{}"ブロックを記述している悪い例
if ( isMin() ) {
     System.out.println("最小です。");
} else {
     // 無駄なブロック
}


   なお、この規約はJava特有のものではありません。

1   2  3  4  次のページ

参考文献など
Javaコーディング規約2004は以下のサイトおよび書籍として発表しています。本連載と共に参考にしてください。

「Javaコーディング規約2004」 http://www.objectclub.jp/community/codingstandard/JavaCodingStandard2004.pdf

「オブジェクト倶楽部」
Javaコーディング規約2004は、オブジェクト倶楽部で公開して頂いております。 http://www.objectclub.jp/

「超図解 Java ルールブック」
Javaコーディング規約が「超図解 Java ルールブック」という名前で書籍になりました。規約の詳しい内容に関しては本書籍をご覧ください。
http://www.x-media.co.jp/xbook/index.cfm?ID=6


Javaコーディング規約を理解するに際しての参考サイトをご紹介します。

「Code Conventions for the Java Programming Language」 http://java.sun.com/docs/codeconv/
※日本語訳を提供しているページ
http://www.tcct.zaq.ne.jp/ayato/programming/java/codeconv_jp/


Java コーディング規約を理解するに際しての参考書籍をご紹介します。

「Java の格言」
「Java の鉄則」
「リファクタリング - プログラミングの体質改善テクニック」
「The Elements of Java Style」
「Effective Java - プログラミング言語ガイド」
「Essential Java Style」
「Javaクックブック」
「標準FindBugs完全解説」
株式会社電通国際情報サービス 開発技術センター 高安 厚思
著者プロフィール
株式会社電通国際情報サービス  高安 厚思
株式会社電通国際情報サービス 開発技術センター
Java(J2EE)/オブジェクト指向の研究開発やプロジェクト支援、開発コンサルティングに従事。モデル、アーキテクチャ、プロセスが探求対象。今回は Javaコーディング規約2004の仕掛け人。


株式会社電通国際情報サービス 開発技術センター 東田 健宏
著者プロフィール
株式会社電通国際情報サービス  東田 健宏
株式会社電通国際情報サービス 開発技術センター
CTI、Webアプリの開発経験を経て、現在は主にプロジェクトマネジメント支援、プロセスエンジニアリング、ソフトウェア工学研究開発に従事。最近はコーチング、ファシリテーションといったヒューマン系スキルに興味を持ち日々修得に努めている。


レッドフォックス株式会社 石井 宏和
著者プロフィール
レッドフォックス株式会社  石井 宏和
レッドフォックス株式会社 システムインテグレーションサービス1部所属
主に現在までJavaによるスタンドアロンアプリ・WEBアプリケーションの開発および保守に従事。現在は何故かABAPによる保守業務も担当。また日経新聞の記事感想を日課として、1年間社内で書き続けた。「綺麗なコーディングは綺麗な文章から」をモットーに、コーディング・文章センスを共に磨いている。


INDEX
第10回:制御構造に関する規約
はじめに
  if/whileの条件式で"="は利用しない(C_CTR003)
  繰り返し処理中のオブジェクトの生成は最小限にする(C_CTR009)
  if文とelse文の繰り返しやswitch文の利用はなるべく避け、オブジェクト指向の手法を利用する(C_CTR010)