Javaではint型やdouble型などの変数は基本型として扱われますが、配列にするとオブジェクトとして扱われます。基本型の変数をメソッドのパラメータにした場合、値渡しとなるため、値のコピーが実行され、コピーした値を変更しても元の値を変えることはできません。これに対して、オブジェクトの場合は参照渡しですので、値のコピーではなく参照が渡され、参照を用いてパラメータの値を変更することもできますので、処理効率が上がります。
よって、複数の同じタイプの変数を受け渡す場合、変数ごとの意味にこだわらずに、1つの配列にして扱うと、モジュール強度が高く効率の良いメソッドになります。
一例として、直方体の幅(x)、高さ(y)、奥行き(z)を得て、体積(v)と表面積(a)を返すメソッドを考えます。戻り値が2つありますので、広域変数を使いたくなければ、メソッドを分割するか、戻り値を構造化(クラス化)するなどの工夫が必要です。メソッドを分割する方法を用いると、下記のようなプログラムになります。
このプログラムを改良して、直方体の幅、高さ、奥行き、体積、表面積を1つの配列にして扱ってみましょう。配列はオブジェクトですので、参照渡しとなり、参照を用いてパラメータの値を変更することができますので、戻り値の明示が不要になります。
なお、配列の添字による表記が分かりづらいと感じられる場合は、Javaのクラスライブラリによく見られるように、表意的な定数を用いるとよいでしょう。例えば、直方体の幅をDX、高さをDY、奥行きをDZ、体積をDV、表面積をDAとして表すと、以下のようになります。
改良前のプログラムの可読性を損なわずに、処理の効率化ができます。
Copyright © ITmedia, Inc. All Rights Reserved.