TOP設計・移行・活用> はじめに




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

第9回:継承とインスタンスに関わるコーディング規約
著者: 電通国際情報サービス
高安 厚思、東田 健宏、岡 薫   2005/12/2
1   2  3  4  次のページ
はじめに

   今回、説明する継承・インスタンスに関するコーディング規約は、コーディング規約というよりもJavaを利用する上で知っておくべき項目がほとんどです。これらの知識が不足していると、発見や追跡が困難なバグを発生させる原因となりかねません。これらの規約をしっかりと押さえ、品質のよいプログラミングを心がけてください。
本連載で紹介する規約に関しては、規約名のみを記述しています。規約そのものは、以下のURLからダウンロードして確認してください。
http://www.objectclub.jp/community/codingstandard/JavaCodingStandard2004.pdf
継承

   Javaでは推奨しない記述方法でもアプリケーションとしては動作してしまう場合があります。このようなことはパフォーマンスを下げる要因となるとともに、バグが発生した場合には大きな修正が発生することにもなります。

   以下では継承に関する規約を紹介します。継承関係にあるクラス・メソッドの関係を把握し、正しく継承してください。


スーパークラスのインスタンス変数をサブクラスでオーバーライドしない(C_IHT001)

   Javaではスーパークラス/サブクラスで同一名称のフィールドの宣言が可能です。表題には「オーバーライドしない」とありますが、同一名称のフィールド間にオーバーライドという関係はありません。

   つまりこれは、スーパークラスで宣言されたフィールドとサブクラスで宣言された同名のフィールドは、各々のクラスに従属する独立したフィールドとして扱われるからです。

   サブクラスでスーパークラスのフィールドと同一名称のフィールドを宣言することを「継承によるフィールドの隠蔽」と呼びます。

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


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


株式会社電通国際情報サービス 岡 薫
著者プロフィール
株式会社電通国際情報サービス  岡 薫
株式会社電通国際情報サービス アウトソーシング事業部所属
Java(J2EE)によるフレームワーク開発やWebのセキュリティ研究開発の経験を経て、現在は、大手企業の管理会計システムの開発プロジェクトに従事。多次元データベースの検索パフォーマンスを向上することに日々頭を悩ませている。


この記事の評価をお聞かせください
ボタンをクリックしますとウインドウが開きます。

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