Skip to content

Merge Duplicate Blocks

Sourcery refactoring id: merge-duplicate-blocks

Description:

Restructure conditional to merge duplicate branches together

Before:

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)

After:

def process_payment(payment):
    if payment.currency == "USD" or payment.currency == "EUR":
        process_standard_payment(payment)
    else:
        process_international_payment(payment)

Explanation:

We should always be searching out opportunities to remove duplicated code. A good place to do so is where there are multiple identical blocks inside an if..elif chain. This refactoring combines such blocks.

Now if we need to change the process_standard_payment(payment) line we can do it in one place instead of two. This becomes even more important if these blocks involve multiple lines.