什么是更好的做事方式?
if f1() and f2() then...
或
if f1() then
if f2() then
或:
fBoolean1 := f1()
fBoolean2 := f2()
if fboolean1 and fboolean2 then...
在第一个例子中,我不确定这两个函数中的哪一个被评估。在第二个示例中,仅当f1计算为true时才会计算f2,而在第三个示例中,f1和f2都会被评估。
最好的方法是什么?
答案 0 :(得分:8)
编译器很聪明。在第一个示例中,如果f1
返回false
,则甚至不会调用f2
(除非您通过禁用延迟评估或<来更改默认编译器设置em>布尔短路评估)。因此,第一个选项相当于第二个选项(同样,除非您更改了默认设置)。
因此,在性能方面,两个第一选择更好。否则,这是一个品味问题。第二个选项将产生两个代码块,具有两级代码缩进(如果您遵循标准的缩进规则,就像您似乎那样)。也许你更喜欢第一种选择。
当然,如果您需要稍后使用f1
和f2
返回的值,可能需要多次,第三个选项是优越的。