當一組參數常一起穿梭於各函式間時,最好將它們打包成一個專屬物件。
這不僅能揭示它們的關係、縮短函式簽章,還為更深入、更易維護的改變鋪路。

Introduce Parameter Object
透過將相關資料組織成單一結構並相應地更新呼叫方式,你提升了設計的抽象層次,並簡化了對領域的理解。
一切從引入參數物件(Parameter Object)開始。
何時該引入參數物件?
- 參數成群:多個參數被一起傳遞給多個函式
- 資料封裝:將相關欄位封裝成單一、連貫的結構
- 簡化簽章:縮短冗長的參數列表以提升清晰度
- 為未來做準備:便於日後擴展或驗證
對於瑣碎或一次性的呼叫,參數物件可能會增加不必要的複雜度。
範例#
重構前#
def process_data(name, age, email):
print(f"Name: {name}, Age: {age}, Email: {email}")
if __name__ == "__main__":
process_data("Alice", 30, "alice@example.com")重構後#
class PersonData:
def __init__(self, name, age, email):
self.name = name
self.age = age
self.email = email
def process_data(person: PersonData):
print(f"Name: {person.name}, Age: {person.age}, Email: {person.email}")
if __name__ == "__main__":
alice = PersonData("Alice", 30, "alice@example.com")
process_data(alice)