我们现在有一个参数 type,需要根据 type 进行相应的代码处理( type 大概有 20+ 种情况),用题目中的三种方式如下
if-else 方式
if (type == 'type1') {
// todo something
} else if (type == 'type2') {
// todo something
}
...
else if (type == 'typeN') {
// todo something
} else {
// otherwise
}
switch 方式
swtich(type) {
case 'type1': /* todo something */ break;
case 'type2': /* todo something */ break;
...
case 'typeN': /* todo something */ break;
default: /* otherwise */ break;
}
另外一种(我不知道这叫什么方式)
static {
// 这里的 put 可以通过别的方式装载,可以一次性写好了之后,需要扩展时主动添加到 map 里面(也可以用注解注入等方式)
map.put('type1', new Type1Process())
map.put('type2', new Type2Process())
...
map.put('typeN', new TypeNProcess())
map.put('default', new DefaultProcess())
}
proc = map.containsKey(type) ? map.get(type) : map.get('default')
proc.exec()
从执行效率、可读性、可维护性等多个方面来看,哪种方式综合评分更高?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.