设计程序以避免大的if-else块
Design program to avoid a large if-else block
我有大量的掩码和代码列表
var codes = [
foo: { mask: 0x1234, code: 0x0010 },
bar: { mask: 0x1F00, code: 0x0310 },
bla: { mask: 0x12F0, code: 0x2010 }
...
]
我想执行一些操作...
var doStuff = function(number) {
if ((number & codes.foo.mask) == codes.foo.code) {
// do some stuff
} else if ((number & codes.bar.mask) == codes.bar.code) {
// do other stuff
} else if ((number & codes.bla.mask) == codes.bla.code) {
// do other stuff
}
...
}
您将如何设计程序以避免大的if-else块?示例代码是JavaScript的,但任何语言的设计模式对我来说都是可以的。
您可以将//do some stuff
部分添加到foo,bar,bla对象中,然后循环遍历数组,即
var codes = {
foo: { mask: 0x1234, code: 0x0010, action: function(){/*do foo stuff*/} },
bar: { mask: 0x1F00, code: 0x0310, action: function(){/*do bar stuff*/} },
bla: { mask: 0x12F0, code: 0x2010, action: function(){/*do bla stuff*/} }
...
}
for (var item in codes){
if ((number & codes[item].mask) == codes[item].code)
codes[item].action();
}
如果您不想将数据与代码混合(即,如果代码是从服务器获取的(,您也可以仅为函数创建一个单独的关联数组
var codes = {
foo: { mask: 0x1234, code: 0x0010},
bar: { mask: 0x1F00, code: 0x0310},
bla: { mask: 0x12F0, code: 0x2010}
...
}
var funcs = {
foo : function {/* do foo stuff */ },
bar : function {/* do bar stuff */ },
bla : function {/* do bla stuff */ },
}
for (var item in codes){
if ((number & codes[item].mask) == codes[item].code)
funcs[item]();
}
可以在代码为索引的每种情况下使用函数名称创建一个数组并命名值。
array[code] = "function_name"
然后应用掩码并调用函数:
call(array[number & codes.foo.mask])
很简单,我会使用策略模式。 像你这样的人长期以来一直用工厂和多态来处理这个确切的问题,这是战略的基础。
相关文章:
- 如何在ReactJS JSX中执行嵌套的if-else语句
- Javascript Return and if/else
- JavaScript if-else 速记错误
- 如何检查if/else语句中的随机条件
- 在javascript中创建数组,而不是if.else
- Javascript If else 只返回 TRUE 或只返回 FALSE
- jquery if else不返回警报消息
- 在Javascript中为if/else语句添加OR
- If Else Java Script HTML
- jQuery/Javascript foreach If/Else |如果为空(不执行任何操作)Else(显示forea
- 我应该如何应用if-else条件来向具有不同用户角色的人显示不同的菜单
- geoTest函数-创建if/else语句
- JavaScript中的温度转换器(IF ELSE条件)
- Jquery/Javascript使用IF/ELSE语句更改img SRC
- 编写if-else语句的更好方法
- 在if/else语句中显示DIV
- if-else循环和jquery在热应用程序或冷应用程序中不起作用
- JavaScript if/else 程序未按预期生成警报
- 设计程序以避免大的if-else块
- 是否可以在jQuery .scroll()事件处理程序中使用if-else