|
||||||||||||||||||||||||||
| 1 2 3 4 次のページ | ||||||||||||||||||||||||||
| はじめに | ||||||||||||||||||||||||||
|
今回はコレクション・ストリーム・例外に関する規約を説明します。「コレクション」「ストリーム」「例外」という言葉は、Javaのプログラムを書く上で一度は必ず目にするかと思います。これらを熟知しないで実装すると、表1にあげるような問題を引き起こす可能性があります。
表1:規約を知らないことによる問題 今回説明する規約を守ることによって、表1にあげる問題をさけることができるようになるでしょう。初心者の方だけではなく中級者にも一読いただき、よりよいJavaプログラミングの一助としてください。
本連載で紹介する規約に関しては、規約名のみを記述しています。規約そのものは、以下のURLからダウンロードして確認してください。
http://www.objectclub.jp/community/codingstandard/JavaCodingStandard2004.pdf |
||||||||||||||||||||||||||
| コレクション | ||||||||||||||||||||||||||
|
古いコレクションクラスは可読性が低く、パフォーマンスもよくありません。Java2以降で同一の機能を実現できるコレクションクラスがある場合は、優先的にJava2以降のコレクションクラスを使用するべきです。 |
||||||||||||||||||||||||||
| Java2以降のコレクションクラスを好め(C_CLT001) | ||||||||||||||||||||||||||
|
java.utilパッケージで提供されているコレクションクラスを使用するときは、ArrayListクラスやHashMapクラスなどのJava2以降のコレクションクラスを使いましょう。 読者の中にはJDK 1.0の時から存在しているVectorクラスやHashtableクラスをよく利用している方もいるかもしれません。しかしVectorクラスやHashtableクラスは処理が遅く、データ構造変更の負荷が高いという難点があります。 Java2以降ではこのような昔から存在するコレクションクラスよりも、汎用的かつ統一的に扱えるコレクションフレームワークがサポートされるようになりました。ListやMapなどのインタフェースとそれを実装したArrayListクラスやHashMapクラスを使うことにより、整理されたわかりやすいメソッドを利用できます。 |
||||||||||||||||||||||||||
| 特定の型のオブジェクトだけを受け入れるコレクションクラスを利用する(C_CLT002) | ||||||||||||||||||||||||||
|
コレクションクラスを利用するときは無作為にオブジェクトを格納するのではなく、特定のオブジェクトを格納するようにしましょう。 無作為に様々な型のオブジェクトを格納してしまうと、格納したオブジェクトを取り出す際に表2にあげる問題が発生します。
表2:格納したオブジェクトを取り出す際の問題 以下のサンプルコードのようにクラスを作成することで、String以外のオブジェクトを格納する際にはコンパイル時にエラーとすることができます。こうすることで、ランタイムでしか発見できないようなバグ(ClassCastExceptionなど)を減らすことができます。またinstanceofで型をチェックする必要がないため、コードもシンプルになり、可読性も向上します。 特定の型のオブジェクトだけを受け入れるクラスサンプル |
||||||||||||||||||||||||||
public class StringHashMap {
|
||||||||||||||||||||||||||
|
なおJava5ではGenericsという技術(C++のテンプレートに類似)によって、本規約は下記サンプルのように簡単に実装できるようになりました。参考にしてみてください。 特定の型のオブジェクトだけを受け入れるGenerics(Java5)サンプル |
||||||||||||||||||||||||||
public class GenericsSample {
|
||||||||||||||||||||||||||
|
Mapとして宣言されたstrMapは、上記のStringHashMapと同様の性質をもつHashMapクラスのインスタンスが格納されています。strMapのgetメソッドやputメソッドにString型以外を代入するとコンパイルエラーとなります。 |
||||||||||||||||||||||||||
|
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完全解説」 |
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||

