![](/img/trans.png)
[英]How to refactor this function to reduce its cognitive complexity issue for using of multiple if-elif-else statements in python?
[英]How to reduce complexity of function using multiple if statements
我已經為我正在制作的游戲編寫了這個 function,但是我覺得使用多個嵌套的 if 語句使我的想法過於復雜。 有誰知道這樣做更簡潔的方法? 如果這看起來微不足道,我對編碼很抱歉。
function 檢查以下內容:
Team == 0 :該行 - 上一個行是負值
Team == 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.