Re:null初期化を回避せよ

nullによる初期化を回避せよ その2 - @katzchang.contexts
一度変数に代入するパターンだったらこうかな。

public class Foo {
    public enum Bar {Hoge, Fuga, Piyo};
    
    public static String hoge(Bar bar) {
        if(bar==null) return null;
        final String hira;
        switch (bar) {
        case Hoge:
            hira = "ほげ";
            break;
        case Fuga:
            hira = "ふが";
            break;
        case Piyo:
            hira = "ぴよ";
            break;
        default:
            throw new AssertionError("enumの要素追加にswitch文が対応していないんじゃないですかね");
        }
        return hira;
    }
}
  • nullに対する扱いを明示
  • final+初期化なしの変数宣言で「後で必ず一度だけ代入される」ことを明示

finalなローカル変数は多用している。初期化後に代入されないことを明示できるし、彼氏が破壊的代入使ってたら別れたい……。

回答例で気になったのがnullの扱い。コードを一見した時点では引数にnullを渡すことが許容されてるのかどうかよくわからなかった。このへんは明示的に書いておきたい。defaultでnullを返すやりかただと、enumの要素を追加したけどcaseの追加忘れたときに気づきにくいのでちょっとやだ。