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