Performance begin end块是否影响条件语句的性能?

Performance begin end块是否影响条件语句的性能?,performance,delphi,if-statement,syntax,Performance,Delphi,If Statement,Syntax,我在德尔福工作。如果我们以不同的方式编写if condition,性能会有什么不同吗?例如: if (condition) then someVar := someVal else someVar := someOtherVal; 或者我们可以写: if (condition) then begin someVar := someVal; end else begin someVar := someOtherVal; end; 我更喜欢第二个选项,只是因为它看

我在德尔福工作。如果我们以不同的方式编写
if condition
,性能会有什么不同吗?例如:

if (condition) then
   someVar := someVal
else
   someVar := someOtherVal;  
或者我们可以写:

if (condition) then begin
   someVar := someVal;
end else begin
   someVar := someOtherVal;
end;  

我更喜欢第二个选项,只是因为它看起来比第一个好。

这对性能没有影响


begin
end
告诉编译器代码块的开始和结束位置,但不需要在那里进行计算。

不,性能没有差异,创建的代码将是相同的


一个可能比第二个选项看起来更好更重要的方面是,它更有利于维护。如果需要在else块中添加另一条语句,您不会意外忘记添加begin和end,这会将语句置于If之外并始终执行。

如果elseif else,您应该记住的唯一一件事是在边缘情况之前在代码中保留常见情况,因此,尽可能少地计算条件。

开始和结束不要像其他人已经说过的那样降低代码的速度。我正在写另一个答案,以鼓励你更明确地始终使用开始和结束,只要你可以使用它们

自由地使用Begin和End是很好的,不要担心它们会让你慢下来(因为它们不会)

如果你走另一条路,把“开始”和“结束”这两个词都省略掉,你就会陷入另一种麻烦


这件事经常发生在我身上。当您在不存在begin和end语句的地方插入一行时,您可能会遇到麻烦。然后,你会抓挠你的头,想知道你做了什么,打破了你的代码。无论何处开始结束,即使在不需要的地方,都是许多Delphi程序员的标准操作程序。

根据object pascal样式指南,“end else Begin”被认为是不正确的@克里斯:这是一个很好的风格指南的例子,但不是好的代码布局的全部。使用end else begin one line样式具有良好的可读性参数。如果你感兴趣,我会找到这个链接。虽然我知道样式指南实际上使用了正确和不正确的术语,但这完全是一个主观问题,根本不应该使用这些术语。Object Pascal样式指南是您可以采用或不采用的标准。在该标准中,有一些结构被认为是“正确的”和其他“不正确的”,为什么要使用其他术语?这并不意味着你可以采用其他标准,如果你愿意的话。有些项目不能提交不符合采用标准的代码,这是“不正确”的,是不允许的。确实,代码格式与OP问题无关,代码语法正确,这在这里很重要。@Idsandon:使用诸如correct和correct之类的术语,意味着有一种好的编码方式和一种错误的编码方式,而不是“简单地”一种可取的方式和一种不可取的方式。对我来说,这是一个非常重要的区别。在偏好问题上,没有正确或错误。@Rob:没有,我没有遗漏Idsandon的观点。我想说的是,通过使用“不正确”这个词,你会产生与这个词相关的所有含义。虽然Chris确实说过“根据风格指南,这是不正确的”,但最后一点经常被忽略或听不到。这就是人们倾向于非常防御的时候。这是不必要的。这就是为什么我反对“速记”使用正确和错误。让它“样式不正确”或其他什么,但要保持细微差别,它是正确或不正确的样式,而不是代码。是的,这对性能问题很有帮助。。。不应该得到-1。我从不使用
begin。。。不需要时结束
。这使代码更具可读性。我从来没有遇到过这样的问题——没有bug,没有搔头,没有问题。我看不出有经验的Delphi开发人员有任何理由不跳过不必要的
begin。。。结束
s。若您只正确地缩进代码,并且意识到“悬空其他”的现象,那个么就不会出错。(我从12岁起就开始使用Delphi开发,因此我本能地了解语言。)我至少可以看出一个原因,为什么一个有经验的Delphi开发人员可能会使用不必要的begin…end:他可能有经验不足的同事。(除此之外,我认为自己很有经验,而且我确实经常使用它们。也许我没有我认为的那么有经验,或者你的说法可能是错误的。)正如任何阅读者所看到的,人们都不同意,这件事很小,也没有什么最终意义。您必须学会在出现悬空问题时修复它,并且在编写代码时必须做您认为最好的事情。当你与一个开发团队合作时,希望大家都能达成一致。如果你使用适当的缩进并知道自己在做什么,你怎么可能“意外地忘记添加开始和结束”?我可以在睡梦中发现缺少的
begin
s和
end
s@安德烈亚斯:不是每个人都像你一样敏锐,而且大多数人都有那些你似乎从未有过的失落时刻编写可维护的代码不是编写您可以维护的东西,而是编写大多数程序员可以维护的东西。我最喜欢的是:那些从不犯错误的人,通过他们自己的核算。。。。好。当然,存在一些会计缺陷。:-)