1. ホーム
  2. java

[解決済み] 構文を満足させるために return 文を持つことは悪い習慣か?

2023-07-14 13:16:10

質問

以下のコードを考えてみましょう。

public Object getClone(Cloneable a) throws TotallyFooException {

    if (a == null) {
        throw new TotallyFooException();
    }
    else {
        try {
            return a.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
    }
    //cant be reached, in for syntax
    return null;
}

return null; は例外が発生する可能性があるため必要ですが、そのような場合、すでにnullかどうかをチェックしているため(そして、呼び出しているクラスがクローンをサポートしていることを知っていると仮定します)、try文は決して失敗しないことが分かっています。

構文を満たし、コンパイル エラーを回避するために、最後に余分な return 文を入れることは悪い習慣でしょうか (到達しないことを説明するコメント付き)。または、余分な return 文が不要になるようにこのようなものをコーディングする良い方法があるのでしょうか?

どのように解決するのですか?

余計なreturn文がない分、わかりやすい方法は以下の通りです。私なら CloneNotSupportedException もキャッチせず、呼び出し元へ渡すようにします。

if (a != null) {
    try {
        return a.clone();
    } catch (CloneNotSupportedException e) {
        e.printStackTrace();
    }
}
throw new TotallyFooException();

順番をいじって、最初に持っているものよりももっとわかりやすい構文にすることは、ほとんど可能です。