重構代碼 02 構建方法

可能絕大多數需要重構的地方就是因爲方法太長,太長的方法往往包含了太多的信息,從而導致代碼的邏輯太混亂或者說太複雜。

當你看着一段代碼,然後發現它很長,或者你必須要看comments才能理解它的意思的話,那麼就重構它,將代碼變成小塊。之所以要把代碼變成小塊,原因一方面是爲了避免複雜的邏輯,另一方面是這樣可以增加別的方法用到它們的機會,從而增大代碼的重用率。但是注意,方法的名字一定要取得合理,容易理解,這一點尤其要引起注意。 有時候即使方法的名稱可能比方法的內容還長,但是只要能夠讓代碼整體看起來更加清晰,就果斷地將其分拆開來。

有可能你想提取一段代碼出來新建一個方法,但是如果代碼很短,然後又想不出非常好的名字的話,那麼就最好別提取,再說一次,名字十分重要。

重構的主要大意是希望引入間接,從而是代碼細化,邏輯更加清晰。但是又回到"度"的問題上了,什麼東西都有一個度,不要過度細分纔好。


局部變量

在提取方法的時候,涉及到局部變量。加入局部變量只和要提取出來的方法有關的話,直接就和其它代碼一起提取出去就是了。但是,如果局部變量不止被提取的代碼要使用,那麼就稍微複雜一點了。這個也分成2種情況,第一種,提取的部分在其它要使用的部分的前面。那麼就在裏面做更改就是了,問題不大;另外一種,別的代碼先使用,然後再在被提取的代碼裏面使用,這個時候就要把其它部分的代碼寫成一個getter,把局部變量封裝進去,最後返回該局部變量的值。在被提取出來的代碼中,使用getter來獲取該值。

總的來說要儘可能地減少局部變量的使用,轉而使用方法將它們封裝好,一個方法返回一個值。注意參數之間的關係,可以的話,也減少參數的數量。有時候局部變量可能只是使用了一次,被一個簡單的表達式賦值,那麼就去掉這個局部變量,直接使用那麼簡單表達式代替就行了。

但是另外一些情況就要鼓勵使用局部變量了,假如你要做某個判斷,if(XXXYYYZZZ),如XXXYYYZZZ本身是一個表達式的話,最好將其放在一個語義明確的局部變量中,這樣別人才更加容易理解一些。還有一種情況,比如你有一個返回值,這個值由幾部分組成,每個部分都是一個表達式,那麼你最好先將表達式賦值給局部變量,然後再由局部變量組成表達式返回,這樣語義要清晰得多。

最後還有一種更加優秀的選擇就是,將這個些個局部變量變成方法的返回值,這樣就還是可以避免局部變量的使用。

不同的局部變量具有不同的功用,如果只是簡單的賦值,而不是在 一個循環之類的東西里面,不要將不同類型的值賦給同一個局部變量。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章