可變資料易造成問題:當它與許多程式碼有偶合關係,修改某處就會對另處產生連鎖反應。
我們應盡量減少可變資料的作用域。

Replace Derived Variable with Query
替換衍生變數為查詢函式是種對應作法。
如果來源資料會變或衍生資料的生命週期長,使用物件包含計算式與衍生資料是個好作法;
如果來源資料不會再變或衍生資料生命週期短,那用物件或用函式直接轉出新資料都可被接受。
# Before
class Inventory:
def __init__(self):
self.items = []
self.item_count = 0
def add_item(self, item):
self.items.append(item)
self.item_count += 1
def print_inventory(self):
print(f"Total items: {self.item_count}")
for item in self.items:
print(f"Item: {item}")
# After
class Inventory:
def __init__(self):
self.items = []
def add_item(self, item):
self.items.append(item)
def get_item_count(self):
return len(self.items)
def print_inventory(self):
print(f"Total items: {self.get_item_count()}")
for item in self.items:
print(f"Item: {item}")