2017-08-21 27 views
0

以下一段代码的最佳做法是什么?最佳实践:如果树或'Early Out'

If Condition = False Then End 
' Rest of my code. 

OR

If Condition = True Then 
    'Rest of my code. 
Else 
    End 
End if 

如果条件没有在我的代码实现,我不想无谓地运行所有的我的代码。如果在我的代码上面使用If语句来阻止它在Condition不被满足的情况下运行,或者更好地使用更充实的If语句来处理这个问题,那么是否更好?

后一段代码在技术上并不要求'结束',它只是绕过了我的代码的执行。

+2

这取决于和自以为是。 –

+0

我知道没有硬性规定,但是在这个问题上没有最佳做法吗?例如,我读过Early Out代码在函数中很好,这同样适用于你的主模块吗? – Nicolas

+0

这确实是主观的,你的例子太单纯了,无论如何都不能说明情况。 *很多嵌套级别可以被认为是[Arrow Anti-Pattern](http://wiki.c2.com/?ArrowAntiPattern) –

回答

0

我会说这取决于变量的类型Condition。这可能起初看起来相同,但前提是我们假设Condition的类型为Boolean,这里没有定义。

  1. 如果类型为Boolean
    然后,它是由你选择哪一个。两者都是安全的,我会说这是基于意见的,你更喜欢哪一个。

  2. 如果类型是Boolean
    对于Condition是例如类型为LongInteger,并且其值不是0(意思是false)而不是-1(意思是true),例如对于Condition = 1它们的行为不同。该...

    • 第一个解决方案将运行代码
    • 但第二个解决方案将结束代码的其余部分。
0

这样认为:至极条件是最有可能经常发生(true或false)。并且比你在你的代码中使用这个条件。所以当你的sub \函数运行时,它将不得不采取较少的代码。

或者换句话说:如果有条件,那么A else B, 如果发生的次数比B多,那么一定要先放置A代码,这样代码会更快。