这取决于编程语言。
大多数现代/流行语言都支持短路评估,这意味着程序不会评估整个表达式,而是在获得整个表达式的结果后立即停止评估(其他人已经给出了示例)。
但也有例外
我知道不支持短路评估的两种语言是 Microsoft VB(6) 和 VB.NET。
VB6根本不支持,所以这里嵌套If
s if是常用的优化技术。此外,在诸如
If Not rs Is Nothing And Not rs.EOF
不使用嵌套If
s 会导致执行错误,而rs
is Nothing
。
VB.NET
引入了两个新的逻辑运算符AndAlso
,OrElse
它们支持短路评估。
标准VB.NET
And
和Or
运营商不支持短路评估,这是新手开发人员常见的错误来源。
优化
在这两种情况下(语言支持而不是短路评估),您都可以检查表达式,以便更快地评估 first。
因此,而不是(如果用户是女性,使用偶数键并且它已登录,则检查 DB):
if (db.getUserSex() == FEMALE && userKey % 2 == 0 && userKey % 2 && isUserLogged)
使用(检查是否登录(布尔值),使用偶数键(算术运算符)并最后检查数据库中的性别):
if (isUserLogged && userKey % 2 == 0 && db.getUserSex() == FEMALE)