【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年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。