当我最近在一家大公司工作时,我注意到那里的程序员遵循这种编码风格:
假设我有一个函数,如果输入为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);
}
我不能说服自己为什么第二个代码比第一个更好。第二个代码肯定会花费更多的时间来运行。
使用第二个代码的唯一原因可能是它提供了更好的可读性。但是,如果该函数被多次调用,那么第二个函数会不会减慢该实用程序调用它的运行时间?
你怎么看待这件事?
switch
似乎比更加合适if-else
)。但是在某些时候,它变得有问题。使用Map的主要优点是可以从文件或表等中加载它。如果您要对地图的输入进行硬编码,那么在开关上我看不到很多价值。