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