類別(Class)提供了將資料與相關函式組合在一起的基本結構。
當一組函式緊密地協作於相同資料時,合併成類別能釐清它們的關係、移除冗餘參數,
揭示可以重構進類別的新行為。

Combine Functions into Class

何時該將函式合併成類別?

  • 共享資料:多個函式操作相同的輸入資料
  • 重複參數:多個函式接收相同的引數
  • 高內聚:你發現了自然應該放在一起的額外相關行為
  • 封裝:你想把資料和對該資料的操作綁在一起

範例#

重構前#

def add_numbers(x, y):
    return x + y


def subtract_numbers(x, y):
    return x - y


if __name__ == "__main__":
    sum_result = add_numbers(10, 5)
    subtract_result = subtract_numbers(10, 5)
    print(f"Sum: {sum_result}, Subtract: {subtract_result}")

重構後#

class Calculator:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def add(self):
        return self.x + self.y

    def subtract(self):
        return self.x - self.y


if __name__ == "__main__":
    calc = Calculator(10, 5)
    sum_result = calc.add()
    subtract_result = calc.subtract()
    print(f"Sum: {sum_result}, Subtract: {subtract_result}")