Technology

[Java]戻り値とはなぜ必要なのか

2020-12-30

戻り値について学んだ時に、なぜそもそも戻り値なんて必要なんだろう?と疑問に思ったので整理


まずはメソッドの役割について整理


そもそもメソッドとは、やって欲しいいくつかの処理をまとめたものにデータを入力し、終わった処理を出力するために作られたもの。

例えば関数内で足し算をして欲しければ、メソッド内で足し算の処理を記述し、引数をその中に入れる形となる。


メソッドについてはこちらでも別途整理した。


戻り値がないとどうなる?

戻り値がないということは、処理した計算結果が、出力されないということ。


メソッド内で計算したはいいものの、現段階ではその計算結果を使うことができない。


戻り値がない書き方もできる

一応、returnの戻り値を使わなくても、コンソール内に表示させることはできる。

引数を使わないでメソッドの中に、足す数字を宣言し、コンソール表示の処理までメソッドにかき、そのメソッドを呼び出してみる。



すると、メソッド内では計算結果を表示するまでが書かれているので、コンソールには表示される。


ではなぜ戻り値なんてものを使うのか?

戻り値を使うことによって、より汎用性のあるメソッドを作れることがあげられる。

例えば上記の例であれば、「1と5を足して、コンソールに表示させる」メソッドを作った。

もしこのメソッドを他でも使いまわしたいなら全く問題ない。

しかし他の数字を足すメソッドを呼び出したい時には、このメソッドはもう使えなくなってしまう。

そこで引数と戻り値を使って、「数を足して、その値を呼び出し元に返す」メソッドを作ってみる。



こうすると、引数は何を入れても良いことになる。

また加算し終えて呼び出し元に処理が戻った時に、出力した結果をまた別の変数に入れて、引き続き処理を行うこともできる。

「1と5を足して、コンソールに表示させる」メソッドより、より他のところでも使いやすいメソッドが出来上がった。


戻り値は「なぜ必要か」ではなく、「どこで使いたいか」

戻り値学習の際に陥る罠として、なぜこの機能は必要なのか、ということに囚われすぎてしまうことがあげられるのかもしれない。

ここの回答がとても分かりやすかったので参照したい。

上記リンク先の回答で言えば、「なぜ値を返さなくてはいけないのか」ではなく、「メソッドにどんな機能を持たせたいのか」という考えが先に来なくてはいけないという。

つまりメソッドの設計の問題。

だから今回の例で言えば、「1と5を足して、コンソールに表示させる」メソッドを作るのが目的なのであれば、returnを使わなくてもOK。

もし「数を足して、その値を呼び出し元に返す」メソッドを作りたいのであれば、returnを使うべき、ということになる。

しかし、メソッドのメリットの一つとして、「再利用できること」ということを考えると、なるべく汎用性があるものを作るよう努力すべきであり、そのためにはreturnは必要なのだと、学んだ。

-Technology