當函式需要物件某值時,作者喜歡提供整個物件,讓函式自行取用。
參數列長度會減少,日後引數更動也不用再大幅度變動。

Preserve Whole Object
若發現很多地方都僅用部分記錄呼叫不同函式,就代表這類邏輯為重複,可搬為一個整體邏輯。
有時不要做這類重構,當函式與整個記錄處於不同模組,希望它們不互相依賴。
從單一物件拉出值並執行邏輯,通常代表這邏輯應移入整體邏輯;
若有些程式都只用同物件的同組子功能,就代表該提取類別了。
# Before
class Range:
def __init__(self, start, end):
self.start = start
self.end = end
def is_in_range(value, start, end):
return start <= value <= end
range_obj = Range(1, 10)
value = 5
if is_in_range(value, range_obj.start, range_obj.end):
print(f"{value} is within the range.")
# After
class Range:
def __init__(self, start, end):
self.start = start
self.end = end
def contains(self, value):
return self.start <= value <= self.end
range_obj = Range(1, 10)
value = 5
if range_obj.contains(value):
print(f"{value} is within the range.")