重構資料比重構函式更困難——你無法僅透過方法提取來簡化它。
封裝變數(Encapsulate Variable)能將「重組資料」轉化為更簡單的「重組函式」。

Encapsulate Variable
封裝也提供一個單一觀測點,讓你控制資料如何被存取和修改,
這也是物件導向程式設計(OOP)鼓勵保持物件資料私有的原因。
不可變資料(Immutable Data)不需封裝——它無法被修改,所以沒有程式碼會讀到過時值。
不可變性是種強大保障。
何時該封裝變數?
- 存取控制:你需要驗證或限制對資料的讀寫
- 集中管理:將取得或更新值的地方集中起來,便於維護
- 不變式強制:觸發副作用或強制規則(如快取、通知)
對於真正不可變的資料,可以跳過封裝。
範例#
重構前#
config_value = 50
if __name__ == "__main__":
print(config_value)重構後#
class Configuration:
def __init__(self):
self._config_value = 50
@property
def config_value(self):
return self._config_value
@config_value.setter
def config_value(self, value):
self._config_value = value
if __name__ == "__main__":
config = Configuration()
print(config.config_value)
config.config_value = 100
print(config.config_value)