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の追加忘れたときに気づきにくいのでちょっとやだ。