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