Lil*_*lit 9 performance coding-style
最近我碰到了以下C++代码:
if (a)
{
f();
}
else if (b)
{
f();
}
else if (c)
{
f();
}
Run Code Online (Sandbox Code Playgroud)
其中a,b和c都是不同的条件,并且它们不是很短.
我试图将代码更改为:
if (a || b || c)
{
f();
}
Run Code Online (Sandbox Code Playgroud)
但是作者反对说我的改变会降低代码的可读性.我有两个论点:
1)你不应该通过用三个替换一个分支语句来增加可读性(尽管我真的怀疑使用else而不是||可以使代码更具可读性).
2)这不是最快的代码,没有编译器会对此进行优化.
但我的论点并没有说服他.
你会告诉程序员编写这样的代码吗?
您是否认为复杂条件是使用其他而不是OR的借口?
小智 21
这段代码是多余的.它容易出错.
如果你有f();
一天要用别的东西取而代之,你就会有一个错过的危险.
虽然这三个条件机构有一天可能会变得不同,但你可能会有这样的动机,你可以为这种情况做好准备.如果有可能会发生这种情况,那么可以做一些类似的事情.但我建议遵循YAGNI原则(你不需要它).不能说已经编写了多少臃肿的代码而不是因为真正的需要,而是期待明天需要它.实践表明,这不会在应用程序的整个生命周期中带来任何价值,但会大大增加维护开销.
至于如何向你的同事解释它,已经多次讨论过.看这里:
Lie*_*ers 12
用一个函数替换三个复杂条件,明确为什么f()
要执行它.
bool ShouldExecute; { return a||b||c};
...
if ShouldExecute {f();};
Run Code Online (Sandbox Code Playgroud)
由于条件很长,让他这样做:
if ( (aaaaaaaaaaaaaaaaaaaaaaaaaaaa) || (bbbbbbbbbbbbbbbbbbbbbbbbbbbb) || (cccccccccccccccccccccccccccc) ) { f(); }
一个好的编译器可能会将所有这些转换为相同的代码,但上面是这类事物的常见构造.3次调用同一个函数很难看.
归档时间: |
|
查看次数: |
675 次 |
最近记录: |