如何使用多个 if 语句降低函数的复杂性
How to reduce complexity of function using multiple if statements
我已经为我正在制作的游戏编写了这个函数,但是我觉得通过使用多个嵌套的 if 语句我的想法过于复杂了。有谁知道更简洁的方法吗?我对编码还很陌生,如果这看起来微不足道,我深表歉意。
该函数检查以下内容:
团队 == 0:该行 - 前一行为负值
团队== 1:行-上一行是正值
def check(item, row, col):
previousRow = 6
if item.team == 0:
if ((row - previousRow) < 0):
return False
else:
return True
else:
if item.team == 1:
if ((row - previousRow) > 0):
return False
else:
return True
这就是 Sourcery 将您的代码缩减为:
def check(item, row, col):
previousRow = 6
if item.team == 0:
return row - previousRow >= 0
elif item.team == 1:
return row - previousRow <= 0
如果 item.team
既不是 0 也不是 1,那么您的代码将失败并且不执行显式 return
语句,这相当于返回 None
。但是,如果您确定 item.team
将始终为 0 或 1,那么在对 0 的第一次测试失败时对 1 的第二次测试就变得不必要了。
所以在假设item.team
永远为0或1的情况下,代码可以简化为:
def check(item, row, col):
previousRow = 6
return row - previous >= 0 if item.team == 0 else row - previousRow <= 0
我已经为我正在制作的游戏编写了这个函数,但是我觉得通过使用多个嵌套的 if 语句我的想法过于复杂了。有谁知道更简洁的方法吗?我对编码还很陌生,如果这看起来微不足道,我深表歉意。
该函数检查以下内容:
团队 == 0:该行 - 前一行为负值
团队== 1:行-上一行是正值
def check(item, row, col):
previousRow = 6
if item.team == 0:
if ((row - previousRow) < 0):
return False
else:
return True
else:
if item.team == 1:
if ((row - previousRow) > 0):
return False
else:
return True
这就是 Sourcery 将您的代码缩减为:
def check(item, row, col):
previousRow = 6
if item.team == 0:
return row - previousRow >= 0
elif item.team == 1:
return row - previousRow <= 0
如果 item.team
既不是 0 也不是 1,那么您的代码将失败并且不执行显式 return
语句,这相当于返回 None
。但是,如果您确定 item.team
将始终为 0 或 1,那么在对 0 的第一次测试失败时对 1 的第二次测试就变得不必要了。
所以在假设item.team
永远为0或1的情况下,代码可以简化为:
def check(item, row, col):
previousRow = 6
return row - previous >= 0 if item.team == 0 else row - previousRow <= 0