|
||||||||||||||||||||||||||
| 前のページ 1 2 3 4 | ||||||||||||||||||||||||||
| Class名を利用した比較はおこなわない(C_IST002) | ||||||||||||||||||||||||||
|
この規約は、ClassクラスのgetName()メソッドによる比較は実施すべきではないという規約です。本規約で説明している問題点はClassクラス(注5)のgetName()メソッドは、nativeメソッドであり、Java VMの実装により下記の差異が発生する危険性があることです。
※注5:
Classクラスは実行中のクラスおよびインターフェースを表現し、これらのメタ情報(フィールドやメソッドなど)を取得することができます。
表3:Java VMのバージョンの違い
しかしながら、この規約は間違いを含んでいました。本規約はJavaコーディング規約の次期バージョンにて適切に修正または削除される予定です。 JDK 1.4未満(JDK 1.1/JDK 1.2/JDK 1.3)のJava APIドキュメントにおいて、「Class#getClass()は、当該クラスの完全指定名称を返す」ことが明示されています。 Windows環境において、JDK 1.4未満にてこのメソッドの動作を検証したところ、これらすべてのバージョンでドキュメントの記述通り、完全指定名称が取得されることを確認しています。 |
||||||||||||||||||||||||||
| まとめ | ||||||||||||||||||||||||||
|
今回はコーディング規約の継承・インスタンスを説明してきました。ここで紹介した規約は「規約を守れば可読性や保守性が高まる」ものでなく、冒頭で説明した通り、「規約を守らないとバグの可能性がある」規約であることが理解できたと思います。 これらの規約を理解するのに必要とする知識は、Java言語を利用する上で基本中の基本となる「継承」や「インスタンス」に関するものですが、非常に奥が深い分野です。本記事は、これらの知識を習得するには十分なものではありません。参考書籍などを通じて、更なる知識の拡大と定着を目指してください。 正確にこれらの知識を習得するには、多くの時間と労力を費やす必要がありますが、品質のよいプログラミングを実現するためには、最低限知っていて欲しい知識といえます。 |
||||||||||||||||||||||||||
|
前のページ 1 2 3 4 |
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||

