第6回:オブジェクト指向のためのコーディング規約 (1/4)

Javaコーディング規約
Javaコーディング規約

第6回:オブジェクト指向のためのコーディング規約
著者: 電通国際情報サービス  高安 厚思、東田 健宏
インクステクニカルサービス  島澤 甲   2005/10/18
1   2  3  4  次のページ
はじめに

   今回も前回に続いて、コーディング規約について説明します。今回取り上げるのは、import/クラス/コンストラクタ/メソッド/クラスメソッドになります。

   本連載で取り上げる規約のほとんどは、構造化言語のコーディング規約では見られないオブジェクト指向特有のものです。オブジェクト指向には様々なメリットがある反面、オブジェクト指向特有の問題点も存在します。

   例えば、システム開発では複数の開発者で実装をすることが多いと思いますが、その時に次のような経験はありませんか。

  • クラスがいたずらに継承され、処理を追いにくくなっている
  • プロジェクト内で似たようなコードを何度も書いている
  • 他の開発者が作成したメソッドの使い方がいまいち理解できない

表1:よくある問題点

   これらは設計にもからむ内容ですので一概にはいえませんが、適切な権限設定やわかりやすいメソッドの定義を行うことである程度防ぐことができます。

   オブジェクト指向は手続き指向よりも役割を明確にできるため、プログラムの利用法や製作意図を他の開発者に伝えやすく、リソースの共有も比較的容易になりました。しかし、リソースの共有が他の開発者に自分の意図とは違った使い方をされて不具合が発生したり、メソッドの役割が多すぎるために応用が利かなかったりといった問題も起こっています。

   今回は、このような問題をコーディング規約によって改善していく方法を紹介します。


import

   不要なものまでimportしてはいませんか。また、importする順序がソースによって違っていたりしませんか。

   これらを気にしないでコードを書いていると可読性の低下などといった2次的な問題が発生しますので、importに関する規約を明確にしておくとよいでしょう。


java.langパッケージはインポートしない(C_IMP002)

   最初に紹介する規約はjava.langパッケージはimportしないというものです。これはJava言語の仕様で、java.langは非明示的にimportされているためです。java.langに限らず、不要なimportは可読性の低下に繋がりますのでimportしないようにします。

   import文は記述する際にjava.util.*のようにワイルドカードを利用することができます。これは便利なのですが知らないクラスがソースコードにある場合、どのパッケージに所属しているかを理解できなくなります。

   このことから、ユーザパッケージおよび著名ではないクラスに関してはワイルドカードを利用しないことをお勧めします。

   またimport文の書く順番にも気を配ることで、読みやすいコードとなります。書く順番についての規約は特にありませんが、一般的にjava/javax/ユーザパッケージの順で記述することが多いです。

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(J2EE)/オブジェクト指向の研究開発やプロジェクト支援、開発コンサルティングに従事。モデル、アーキテクチャ、プロセスが探求対象。今回は Javaコーディング規約2004の仕掛け人。


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


インクステクニカルサービス株式会社 島澤 甲
著者プロフィール
インクステクニカルサービス株式会社  島澤 甲
インクステクニカルサービス株式会社 システム開発部所属
現在は主にJavaによるWebアプリの開発を担当している。Javaで初めてオブジェクト指向に触れ、オブジェクト指向による分かり易い設計とは何か日々模索している。


INDEX
第6回:オブジェクト指向のためのコーディング規約
はじめに
  クラス
  メソッド
  クラスメソッド
Javaコーディング規約
第1回 良いコードとは、心得5ヶ条
第2回 コーディングレベルを上げるためには?
第3回 ネーミング規約(前編)
第4回 ネーミング規約(後編)
第5回 フォーマットに関するコーディング規約
第6回 オブジェクト指向のためのコーディング規約
第7回 変数に関するコーディング規約
第8回 文字操作・数値・日付に関するコーディング規約
第9回 継承とインスタンスに関わるコーディング規約
第10回 制御構造に関する規約
第11回 コレクション・ストリーム・例外に関するコーディング規約
第12回 スレッド・ガベージコレクションに関するコーディング規約

人気記事トップ10

人気記事ランキングをもっと見る