程式強健度取決於當中的資料結構。
適當的資料結構會讓行為程式碼簡單直接,判斷方法之一是採用領域驅動設計(Domain-driven Design)。

Move Field

傳遞某記錄給函式時也得傳遞另筆記錄、修改某記錄也會更動另筆記錄時,就得考慮移動欄位了。
這類重構在類別環境中較易執行,因為資料都被封裝在存取方法後面。

# Before
class Employee:
    def __init__(self, name, email, salary):
        self.name = name
        self.email = email
        self.salary = salary

class Payroll:
    def __init__(self, tax_rate):
        self.tax_rate = tax_rate

    def calculate_net_salary(self, employee):
        return employee.salary - (employee.salary * self.tax_rate)

# After
class Employee:
    def __init__(self, name, email):
        self.name = name
        self.email = email

class Payroll:
    def __init__(self, tax_rate, salary):
        self.tax_rate = tax_rate
        self.salary = salary

    def calculate_net_salary(self):
        return self.salary - (self.salary * self.tax_rate)