動機(Motivation)
Extract Method是最常用的重構(gòu)手法之一。當(dāng)我看見一個過長的函數(shù)或者一段需要注釋才能讓人理解用途的代碼,我就會將這段代碼放進一個獨立函數(shù)中。
有數(shù)個原因造成我喜歡簡短而有良好命名的函數(shù)。首先,如果每個函數(shù)的粒度都很小(finely
grained),那么函數(shù)之間彼此復(fù)用的機會就更大;其次,這會使高層函數(shù)碼讀起來就像一系列注釋;再者,如果函數(shù)都是細粒度,那么函數(shù)的覆寫
(override)也會更容易些。
一個函數(shù)多長才算合適?在我看來,長度不是問題,關(guān)鍵在于函數(shù)名稱和函數(shù)本體之間的語義距離(semantic distance)。如果提煉動作(extracting)可以強化代碼的清晰度,那就去做,就算函數(shù)名稱比提煉出來的代碼還長也無所謂。