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

|image0|

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

.. code:: python

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

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

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

.. code:: python

   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 来合并条件一和条件二

.. code:: python

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

|image1|

.. |image0| image:: http://image.iswbm.com/20200804124133.png
.. |image1| image:: http://image.iswbm.com/20200607174235.png