6.8 不同条件分支里应减少重合度

http://image.iswbm.com/20200804124133.png

如下是一个简单的条件语句模型

if A:
  <code_block_1>
elif B:
  <code_block_2>
else:
  <code_block_3>

如果 code_block_2 和 code_block_1 的代码完全一致,那么应该想办法减少代码冗余。

这边举个例子,下面这段代码中

def process_payment(payment):
    if payment.currency == 'USD':
        process_standard_payment(payment)
    elif payment.currency == 'EUR':
        process_standard_payment(payment)
    else:
        process_international_payment(payment)

其实更好的做法是用 in 来合并条件一和条件二

def process_payment(payment):
    if payment.currency in ('USD', 'EUR'):
        process_standard_payment(payment)
    else:
        process_international_payment(payment)