performance - 如何向开发人员解释添加额外的 if - else if 条件并不是提高 "improve"可读性的好方法?

标签 performance coding-style

最近我遇到了以下 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?

How do you handle poor quality code from team members?

“Mentor” a senior programmer or colleague without insulting

关于performance - 如何向开发人员解释添加额外的 if - else if 条件并不是提高 "improve"可读性的好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3006508/

相关文章:

c++ - 什么是流畅的界面?

types - Erlang 头文件 (.hrl) 中应该和不应该有什么?

android - 在 CustomView 中连续绘制时性能不佳

android - 关于 FragmentTransaction

coding-style - boolean 值作为方法参数是 Not Acceptable 吗?

java - 当一些私有(private)方法不依赖于实例时,将它们声明为静态是一个好主意吗?

c - 需要在函数前加上 (void)

sql - 如何查询 stackoverflow 风格的评论?

python - Python中一定距离内去重

javascript - 全站 jQuery/javascript 选择器的最佳实践?