天天看點

到底要不要拆分函數

問題描述:

怎樣的函數才算是有意義的函數?

比如這樣的函數有沒有意義?

(1)隻被調用一次的函數

(2)隻有一句實作内容的函數

(3)函數很多的參數

比如一個函數,有很多局部變量,如果要拆成多個函數,那麼每個函數都要傳遞這些局部變量,會造成函數的參數很多。

在拆分函數這個問題上,我們要考慮我們在開發過程中,是以寫為主?還是以讀為主?

Uncle Bob剛好在這友善做過一些統計,他發現,即使是在開發過程中,大部分時間也是在讀代碼的。

那麼更何況後期維護,即使是修改代碼,也是要以讀懂代碼為基礎的。

很顯然,我們的開發是以讀為主的,是以,便于閱讀的代碼就是有意義的代碼。适當地犧牲“寫的友善性”來實作“讀的友善性”是有必要的。

就事論事:

(1)隻被調用一次的函數是否有意義?

答:如果它有助于閱讀,就是有意義的,比如init();

(2)隻有一句實作内容的函數是否有意義?

答:如果它有助于閱讀,就是有意義的,比如将多個判斷條件合并

(3)有很參數的函數是否有意義?

答:如果“讀得友善”的代價是“寫得很不友善”,這并不意味着它不應該被拆分。而是說明這個函數本身設計不合理。它不隻要被拆分,更要被重構。

<a href="http://blog.csdn.net/mishifangxiangdefeng/article/details/43500803">http://blog.csdn.net/mishifangxiangdefeng/article/details/43500803</a>

jiahuafu

繼續閱讀