1
9
行数无关紧要;如果代码是等效的(您的 不是 )
实际上,除非我们知道
在发布模式下(启用了优化),编译器将删除大多数已设置的变量,然后立即使用。上面两行的最大区别是第二个版本不会创建和丢弃
如果重新使用变量(在这种情况下,编译器不一定会删除它),并且如果该变量被lambda/anon方法“捕获”,或者在
|
2
2
我认为您通常应该力求使代码尽可能可读,有时这意味着将代码分开,有时这意味着将代码放在一行上。以可读性为目标,如果性能成为问题,请使用分析工具分析代码,并在必要时对其进行重构。 |
3
1
编译后的代码可能没有任何区别(可能启用了优化),但也要考虑可读性:) 在您的示例中,一行上的所有内容实际上比单独的行更可读。你想做的事情很明显。但其他人可以迅速指出反例。所以用你的判断力来决定该走哪条路。 |
4
1
有一个重构模式 prefer a call to a temporary variable . 遵循此模式减少了代码行数,但使交互式调试更加困难。 |
5
1
一是两者的主要现实问题是, 调试时,在不同的行上使用单个步骤,并将结果传递给局部变量可能很有用。 这意味着您可以清楚地单步执行代码的不同位,这些位给出最终结果并查看中间值。 当您构建优化后,编译器将删除这些步骤并使代码高效。 托尼 |
6
0
在您的示例中,有一个实际的区别,因为您在第一段代码中创建的是不使用的对象和值。 编写代码的正确方法如下:
现在,它和单行版本的区别在于,您要声明更多的局部变量。在大多数情况下,编译器可以对其进行优化,使生成的代码无论如何都是相同的,即使它在生成的代码中实际使用了一个以上的局部变量,与您在该代码中所做的任何其他操作相比,这仍然是可忽略的。 对于这个例子,我认为单行版本更清晰,但是对于更复杂的代码,将其分为几个阶段当然更清晰。局部变量非常便宜,因此如果代码变得更清晰,您应该毫不犹豫地使用一些变量。 |
George S. · 是否存在基于元组的控制流语句内部表示? 6 年前 |
FlatAssembler · 在x86程序集中计算exp(x) 6 年前 |
cib · 即时编译和动态编译有什么区别? 6 年前 |
Artemis · 寄存器与指令之间的差异 6 年前 |
Sam · 了解go工具编译和链接命令 7 年前 |