最近我遇到了以下 C++ 代码:
if (a)
{
f();
}
else if (b)
{
f();
}
else if (c)
{
f();
}
其中a、b、c都是不同的条件,而且都不是很短。
我尝试将代码更改为:
if (a || b || c)
{
f();
}
但是作者反对说我的改变会降低代码的可读性。我有两个论点:
1)您不应该通过将一个分支语句替换为三个分支语句来提高可读性(尽管我真的怀疑是否可以通过使用 else if 而不是 || 来使代码更具可读性)。
2) 这不是最快的代码,没有编译器会优化它。
但我的论点并没有说服他。
您会告诉编写此类代码的程序员什么?
您认为复杂条件是使用else if而不是OR的借口吗?
最佳答案
这段代码是多余的。很容易出错。
如果有一天您要用其他东西替换 f();
,那么您就有可能错过其中一个。
这背后可能有一个动机,这三个状态的 body 有一天可能会变得不同,而你要为这种情况做好准备。如果发生这种情况的可能性很大,那么做类似的事情也许是可以的。但我建议遵循 YAGNI 原则(You Ain't Gonna Need It)。不能说已经编写了多少臃肿的代码,不是因为真正的需要,而是为了明天需要它。实践表明,这不会在应用程序的整个生命周期中带来任何值(value),反而会大大增加维护开销。
<小时/>至于如何向同事解释,已经讨论过很多次了。看这里:
How do you tell someone they’re writing bad code?
How to justify to your colleagues that they produce crappy code?
关于performance - 如何向开发人员解释添加额外的 if - else if 条件并不是提高 "improve"可读性的好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3006508/