效率 ?这些代码之间有啥区别吗? [复制]

Posted

技术标签:

【中文标题】效率 ?这些代码之间有啥区别吗? [复制]【英文标题】:Efficiency ? any difference between these codes ? [duplicate]效率 ?这些代码之间有什么区别吗? [复制] 【发布时间】:2012-05-22 00:27:23 【问题描述】:

可能重复:Is there a difference between i==0 and 0==i?

以下编码风格有什么好处,它们之间有什么区别吗?

int i;

// more code



if (i == 0) ...

if (0 == i) ...

谢谢

【问题讨论】:

一个很容易阅读..另一个没有.. 没有,第二种风格叫做“尤达条件式”。 比较就是这么简单的比较。 所以据我了解,2nd 风格的唯一目标是defensive programming 【参考方案1】:

完全没有区别。

我一直觉得后一个例子的可读性较差,而且我很少看到它,但有些人似乎喜欢它。

【讨论】:

【参考方案2】:

没有区别,选择一个并坚持下去以保持一致性。 (value == variable) 是旧语言的遗留物,您可能会不小心将值分配给 if (a = 0) 中的变量,而不是 (a == 0)

它们都将变成(有效)相同的机器指令,因此根本不会有任何性能差异

【讨论】:

在Java的if语句中不能赋值? @OmnipotentEntity 这个问题也被标记为'c' 原来如此!在那种情况下,这个答案是错误的,特别是这部分:is a relic from older languages where you could accidentally assign a value to a variable in an if (a = 0), instead of (a == 0) @OmnipotentEntity 你是对的,但是在 C 和 C++ 中它是可能的,所以这里使用了这个约定。即使不需要,该约定也迁移到其他语言。无论如何,大多数现代编译器现在都会给你一个警告,但这绝对是代码风格问题,而不是性能问题。 这是一个合法的问题,因为我的印象是可以在 Java 中的 if 语句中进行赋值。我发现在 Java 中不可能做到这一点的暗示令人惊讶,但我并不完全确定,所以我先问了。 :)【参考方案3】:

效率上没有区别,但是为了可读性更喜欢这种风格:

if (i == 0) ...

另一个版本if (0 == i) ... 是Yoda condition 的一个示例,它被认为是一种糟糕的编程习惯。引用链接:

“Yoda 条件”— 使用 if (constant == variable) 而不是 if (variable == constant),例如 if (4 == foo)。因为这就像说“如果天空是蓝色的”或“如果男人是高大的”。

【讨论】:

仅供参考,您的链接是已删除的帖子,对 10k 代表以下的用户不可见

以上是关于效率 ?这些代码之间有啥区别吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

[,] 2d 数组和 [][] 数组之间有啥功能区别吗? [复制]

使用 Spring Security 时,oauth 范围和角色之间有啥区别吗? [复制]

Kafka Consumer 和 Kafka Streams 之间有啥区别吗? [复制]

Keras 中的损失函数和度量有啥区别? [复制]

css 选择器 ~、+、> 有啥作用? [复制]

XML 属性:match_parent 和 fill_parent。似乎两者都是一样的。它们之间有啥区别吗? [复制]