0 c c++ if-statement coding-style switch-statement
最近,我发现了一段看起来像这样的代码.
switch(type)
{
case TYPE1:
doSomething1(type, arg1);
break;
case TYPE2:
doSomething2(type, arg1, arg2);
break;
}
Run Code Online (Sandbox Code Playgroud)
为什么不直接传递那些枚举(TYPE1,TYPE2)而不是传递类型变量?如下例所示.
switch(type)
{
case TYPE1:
doSomething1(TYPE1, arg1);
break;
case TYPE2:
doSomething2(TYPE2, arg1, arg2);
break;
}
Run Code Online (Sandbox Code Playgroud)
我知道当变量被重用时,这种重复是可以的:
switch(type) { case TYPE1: case TYPE2: case TYPE3: someFunction(type, arg1, arg2); break; }
但在第一个例子中,它似乎毫无用处.
你觉得怎么样?这种惯例有什么好处吗?
在可维护性方面,第一个代码段优于第二个代码段.想象一下,你想要改变分支条件,例如反转TYPE1
和TYPE2
:用第一个片段,你有两个编辑,第二个,有四个.
关于你的解释,传递标志可能是"无用的":从不同分支调用的函数是否确实需要枚举标志,不能从你显示的例子中判断.如果他们不这样做,从函数签名中删除枚举是安全的.但是有这样的堕落
switch (type) {
case TYPE1:
case TYPE2:
doSomething(type /*, ... */);
}
Run Code Online (Sandbox Code Playgroud)
建议将doSomething
依赖另一个分支type
,这可能是不必要的代码重复和/或违反关注点的分离.
归档时间: |
|
查看次数: |
92 次 |
最近记录: |