私が最近大企業で働いていたときに、プログラマーがこのコーディングスタイルに従っていることに気づきました。
入力がAの場合は12、入力がBの場合は21、入力がCの場合は45を返す関数があるとします。
だから私は関数のシグネチャを次のように書くことができます:
int foo(String s){
if(s.equals("A")) return 12;
else if(s.equals("B")) return 21;
else if(s.equals("C")) return 45;
else throw new RuntimeException("Invalid input to function foo");
}
しかし、コードレビューで、関数を次のように変更するように求められました。
int foo(String s){
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("A", 12);
map.put("B", 21);
map.put("C", 45);
return map.get(s);
}
2番目のコードが最初のコードよりも優れている理由を私は納得できません。2番目のコードの実行には、間違いなく時間がかかります。
2番目のコードを使用する唯一の理由は、コードが読みやすくなることです。しかし、関数が何度も呼び出される場合、2番目の関数はそれを呼び出すユーティリティの実行時間を遅くしませんか?
これについてどう思う?
switch
ように見えます(より適切なように見えますif-else
)。しかし、ある時点で問題が発生します。Mapを使用する主な利点は、ファイルまたはテーブルなどからそれをロードできることです。入力をマップにハードコーディングしている場合、スイッチに多くの値が表示されません。