我試圖找到一種設計模式(或maybe an algorithm),這將幫助我以更清晰的方式編寫這些規則。有什麼建議麼?更清晰的方式來表示Python中的規則(if-else)
def get_rules(user, value):
if 500 <= value < 5000 and not user.address:
return [REQUEST_ADDRESS]
if value >= 5000:
if not user.address and not user.phone:
return [REQUEST_ADDRESS, REQUEST_PHONE]
if user.address and not user.phone:
return [REQUEST_PHONE]
if not user.address and user.phone:
return [REQUEST_ADDRESS]
# Potentially ~20 more conditions here based on various attributes of user
return [STATES.REQUEST_NONE]
注:我不是在尋找一個規則引擎,因爲我不想在蟒蛇加入「商業友好」 DSL我的代碼複雜化。 Python本身是編寫這些規則的簡單語言。
有趣的讀:http://martinfowler.com/bliki/RulesEngine.html(但我仍然試圖遠離「框架」爲我做這個)。
我的壞,更新片段。 「量」不算什麼,它的「價值」可以是我需要做出決定的一個變量。 – zengr 2015-03-31 21:47:41
爲什麼不建立一個列表並將你需要請求的值添加到該列表中?這消除了很多情況。 – 2015-03-31 21:47:46
當然,我會這樣做。但這不會減少if-else檢查。 – zengr 2015-03-31 21:49:08