|
||||||||||||||||||||||||||
| 前のページ 1 2 3 4 | ||||||||||||||||||||||||||
| その他 | ||||||||||||||||||||||||||
|
最後に、その他として2つの規約を紹介します。 |
||||||||||||||||||||||||||
| Cloneableを明示的に実装(C_MISC001) | ||||||||||||||||||||||||||
|
clone()はオブジェクトのシャローコピーを作成するメソッドですが、Cloneableインターフェースを実装せずに利用しようとするとエラーが発生します。 シャローコピーとは、コピー対象のオブジェクトに参照情報があった場合、そのオブジェクトの参照情報のみを複写する方法です。 シャローコピーとは違うコピー方法としてディープコピーがあります。ディープコピーは、コピー対象のオブジェクトに参照情報があった場合、参照先のオブジェクトも一緒にコピーします。 ![]() 図6:シャローコピーとディープコピー ディープコピーを実装する際は、参照先オブジェクトの2重コピーに注意が必要です。 ![]() 図7:ディープコピーの失敗例 ちなみに、Cloneableのように特に機能を定義している訳ではなく、ある機能の利用可否を判定するためだけに実装されるインターフェースを、「マーカーインターフェース」と呼びます。 |
||||||||||||||||||||||||||
| キャスト処理はinstanceofで囲む(C_MISC002) | ||||||||||||||||||||||||||
|
キャスト処理は継承関係にあるもの同士しか行えません。継承関係にないものがキャスト処理の対象になる(なり得る)場合は、instanceofを用いたチェックを必ず行うようにしてください。このチェックを省略すると、様々なエラーの原因になることがあります。 なお、キャスト処理に限らずエラーが発生し得る処理の前には、必ずチェックを行う習慣をつけるべきです。 |
||||||||||||||||||||||||||
| まとめ | ||||||||||||||||||||||||||
|
今回紹介したスレッド、ガベージコレクション、その他の2つの規約は、Java特有の概念も多く、理解が難しかったかもしれません。 これらの分野は、経験の浅いプログラマにとってはつまずきやすい箇所ですが、要所々々をコーディング規約によりあらかじめルール付けておくことで、無用なミスを排除することができます。状況によってはあまり意識しなくてよい場合もあるかもしれませんが、Javaプログラマとしては、基本的な概念とルールをしっかりと押さえておきたいところです。 さて、12回に渡りJavaのコーディング規約について説明してきました。コーディング規約を設けることの利点はご理解いただけたかと思います。 説明した規約の中には、言語を問わず不変的なルールもあればJava言語特有のルールなどと、様々なパターンがありました。しかし、全体を通して根底にあるものは第1回に紹介した「コーディングの心得5ヶ条」です。
表2:コーディングの心得5ヶ条 紹介したどの規約も、この5ヶ条を基本にしています。 今までの記事でも述べてきた通り、コーディング規約は絶対ではありません。5ヶ条に反しない限り、どんどん改良してください。そして、プロジェクトの事情に即して、冗長なルールは削り、不足は補いながらより使いやすいコーディング規約を作り上げてください。 そうして作り上げたコーディング規約は、プログラミングの作業効率とプログラムの品質の向上に役立つものになります。 最後になりますが、本連載がその一助になれば幸いです。 |
||||||||||||||||||||||||||
|
前のページ 1 2 3 4 |
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||



