【JavaとPython比較】なぜ「戻り値のあるメソッド」が優れているのか?

こんにちは。ゆうせいです。
プログラミングを学びはじめると、「戻り値のあるメソッド」と「戻り値がない(処理だけする)メソッド」の違いに悩んだことはありませんか?
// Java の例
void printSum(int a, int b) {
System.out.println(a + b); // 処理のみ
}
int getSum(int a, int b) {
return a + b; // 値を返す
}
# Python の例
def print_sum(a, b):
print(a + b) # 処理のみ
def get_sum(a, b):
return a + b # 値を返す
このように「値を返すか返さないか」の違いは一見小さなことに思えるかもしれません。
でも実は、戻り値のあるメソッドのほうが圧倒的に応用力が高く、保守性や再利用性にも優れているんです!
今回はJavaとPythonを比べながら、なぜ戻り値があるメソッドの方が良いのか?
例を交えて、丁寧に解説していきます。
そもそも「戻り値」とは?
戻り値(return value)とは、メソッド(または関数)が呼び出し元に返す値のことです。
Javaではreturn
文で、Pythonでも同じくreturn
を使います。
比較①:再利用性の違い
✗ 処理のみ(戻り値なし)
void showGreeting() {
System.out.println("こんにちは");
}
このメソッドは「こんにちは」と表示するだけで、それ以上の使い道がありません。
○ 戻り値あり
String getGreeting() {
return "こんにちは";
}
このように戻り値があれば、他の処理に組み込めるようになります。
System.out.println(getGreeting()); // 出力
email.send(getGreeting()); // メールに使う
String title = getGreeting() + "さんへ"; // タイトルに使う
戻り値があることで、「出力するだけ」に限らず、いろんな使い方ができる!
比較②:テストしやすさ
✗ 戻り値なしはテストが難しい
def print_area(w, h):
print(w * h)
この関数をテストするには、「画面に正しく出力されたか?」を確認するしかなく、人間の目が必要です。
○ 戻り値ありなら自動テストが簡単!
def get_area(w, h):
return w * h
assert get_area(3, 4) == 12
戻り値があると自動でテスト可能。品質も上がります。
比較③:副作用(side effect)が少ない
戻り値があるメソッドは、何かを「出力する」「ログに書く」などの副作用を持たないことが多く、
「純粋関数(pure function)」として扱いやすいです。
# 純粋な関数(副作用なし)
def square(x):
return x * x
同じ引数を渡せば、常に同じ結果が得られる。この性質はデバッグしやすく、安全です。
比較④:柔軟性と拡張性の高さ
✗ 戻り値なしの処理
void process(int a, int b) {
int result = a + b;
System.out.println("合計は: " + result);
}
結果を出力するだけで、他で使い回すことができません。
○ 戻り値を使えば、複数の処理に応用できる!
int sum(int a, int b) {
return a + b;
}
// 利用例
System.out.println("合計は: " + sum(2, 3));
if (sum(2, 3) > 10) {
// 何か特別な処理
}
一度計算した値を使い回すことで、柔軟なプログラムが書けます。
まとめ:戻り値あり vs なし
比較項目 | 戻り値なしのメソッド | 戻り値ありのメソッド |
---|---|---|
再利用性 | 低い(その場で使うだけ) | 高い(どこにでも使える) |
テスト容易性 | 低い(出力を目視) | 高い(assert文などで検証可能) |
柔軟性 | 限定的 | 高い(値の加工・条件分岐に使える) |
副作用管理 | 多くの場合、出力などが混在する | 少ない(pure function として使える) |
保守性 | 修正時に依存箇所の洗い出しが難しい | 修正しても影響範囲が明確で安全 |
今後の学習の指針
- Java・Pythonともに、戻り値をうまく設計することが「良いコード」への第一歩です。
- 「処理をするだけ」よりも、「値を返して他の処理と組み合わせられるか?」を意識してメソッドを設計しましょう。
- 次は「戻り値にオブジェクトやコレクションを使う」ことや、「Optional(Java)」「Noneチェック(Python)」なども学ぶと、さらに理解が深まります。
コードは書いて終わりではなく、再利用してこそ価値がある。
戻り値を意識した設計を心がけて、柔軟で強いプログラムを目指していきましょう!
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール

- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。