重构重复的 if 语句
Refactoring Repeated if Statements
我的代码如下所示:
var1 = do_something_1()
if param == 'A':
var1 = do_something_A_1()
var2 = do_something_2(var1)
if param == 'B':
var2 = do_something_B_1()
var3 = do_something_3(var2)
if param == 'A':
var3 = do_something_A_2()
var4 = do_something_4(var3)
if param == 'A':
var4 = do_something_A_3()
我想知道是否有办法重构此代码中的 if
语句。
三元表达式+元组赋值怎么样?
var1, var2, var3, var4, var5 = \
(do_something_1(), do_something_2(), do_something_3(), do_something_4(), do_something_5()) if param == 'A'
else \
(do_something_A_1(), do_something_A_2(), do_something_A_3(), do_something_A_4(), do_something_A_5())
它不仅可以让您免于评估将要丢弃的东西(假设您对副作用不感兴趣),还可以让您免于重新评估相同的表达式。
您可以这样做(python 2.5 及更高版本)。
var1 = do_something_A_1() if param == 'A'
如果你清楚地说明三种可能的情况,就像这样:
def func(param):
"""
:param 'A' or 'B' or 'C'
"""
if param == 'A':
var1 = do_something_1()
var1 = do_something_A_1()
var2 = do_something_2(var1)
var3 = do_something_3(var2)
var3 = do_something_A_2()
var4 = do_something_4(var3)
var4 = do_something_A_3()
var5 = do_something_5(var4)
elif param == 'B':
var1 = do_something_1()
var2 = do_something_2(var1)
var2 = do_something_B_1()
var3 = do_something_3(var2)
var4 = do_something_4(var3)
var5 = do_something_5(var4)
elif param == 'C':
var1 = do_something_1()
var2 = do_something_2(var1)
var3 = do_something_3(var2)
var4 = do_something_4(var3)
var5 = do_something_5(var4)
return var5
你可以替换这个
var1 = do_something_1()
if param == 'A':
var1 = do_something_A_1()
和
var1 = do_something_A_1() if param == 'A' else do_something_1()
我的代码如下所示:
var1 = do_something_1()
if param == 'A':
var1 = do_something_A_1()
var2 = do_something_2(var1)
if param == 'B':
var2 = do_something_B_1()
var3 = do_something_3(var2)
if param == 'A':
var3 = do_something_A_2()
var4 = do_something_4(var3)
if param == 'A':
var4 = do_something_A_3()
我想知道是否有办法重构此代码中的 if
语句。
三元表达式+元组赋值怎么样?
var1, var2, var3, var4, var5 = \
(do_something_1(), do_something_2(), do_something_3(), do_something_4(), do_something_5()) if param == 'A'
else \
(do_something_A_1(), do_something_A_2(), do_something_A_3(), do_something_A_4(), do_something_A_5())
它不仅可以让您免于评估将要丢弃的东西(假设您对副作用不感兴趣),还可以让您免于重新评估相同的表达式。
您可以这样做(python 2.5 及更高版本)。
var1 = do_something_A_1() if param == 'A'
如果你清楚地说明三种可能的情况,就像这样:
def func(param):
"""
:param 'A' or 'B' or 'C'
"""
if param == 'A':
var1 = do_something_1()
var1 = do_something_A_1()
var2 = do_something_2(var1)
var3 = do_something_3(var2)
var3 = do_something_A_2()
var4 = do_something_4(var3)
var4 = do_something_A_3()
var5 = do_something_5(var4)
elif param == 'B':
var1 = do_something_1()
var2 = do_something_2(var1)
var2 = do_something_B_1()
var3 = do_something_3(var2)
var4 = do_something_4(var3)
var5 = do_something_5(var4)
elif param == 'C':
var1 = do_something_1()
var2 = do_something_2(var1)
var3 = do_something_3(var2)
var4 = do_something_4(var3)
var5 = do_something_5(var4)
return var5
你可以替换这个
var1 = do_something_1()
if param == 'A':
var1 = do_something_A_1()
和
var1 = do_something_A_1() if param == 'A' else do_something_1()