重構筆記 內聯函式

2021-06-27 22:29:43 字數 1167 閱讀 6067

內聯函式」這種重構手法。

下面讓我們一起來學習該重構手法把。

發現:乙個函式的本體與名稱同樣清楚易懂。

解決:在函式呼叫點插入函式本體,然後移除該函式。

//重構前

public int getrating()

boolean morethansixlatedeliveries()

//重構後

public int getrating()

重構過程中經常會以簡短的函式來表現動作意圖,這樣就使得**更清晰易讀。但有時你會遇到某些函式,其內部**和函式名稱同樣清晰易讀。可能你重構了該函式,使得其內容和其名稱變得同樣清晰。果真如此,你就應該去掉這個函式,直接使用其中的**。間接性可能會帶來一些幫助,但是沒有必要的間接性總是讓人感覺不舒服。

還有一種情況是:你手上有一群組織不甚合理的函式。你可以將它們都內聯到乙個大型函式中,再從中提煉出組織合理的小型函式。比起既要移動乙個函式、又要移動它所呼叫的其它所有函式,將整個大型函式作為整體來移動會比較的簡單。

如果你發現**中使用了太多的間接層,使得系統中的所有函式都似乎只是對另乙個函式的簡單委託,造成對被些委託動作弄的暈頭轉向,這時通常也會使用內聯函式。

(1)檢查函式,確定其不具有多型性。(如果子類繼承了這個函式,就不要將此函式內聯,因為子類無法複寫乙個根本不存在的函式)。

(2)找出這個函式的所有被呼叫點。

(3)將這個函式的所有被呼叫點都替換為函式本體。

(4)編譯,測試。

(5)一切正常後,刪除該函式的定義。

內聯函式看起來似乎很簡單。但情況往往那並非如此。對於遞迴呼叫、內聯至另乙個物件中而該物件並無提供訪問函式......每一種情況都會很複雜。不介紹複雜情形是因為:如果你遇到了這樣複雜的情形,那麼就不該運用這種重構手法。

本文主要介紹了重構手法——內聯函式,該手法處理起來比較簡單,說白了就是消除乙個函式,並將其中的**移動到用到該函式的地方。雖然手法比較簡單,但是在開發的過程中還是會經常使用到該手法。

重構筆記——入門篇

重構筆記——**的壞味道(上)

重構筆記——**的壞味道(下)

重構筆記——構築測試體

重構筆記——提煉函式

重構筆記 內聯臨時變數

內聯臨時變數 這種重構手法。下面讓我們一起來學習該重構手法把。ps 雖然某些重構手法看起很簡單,但是和其它重構手法結合起來使用,會產生異曲同工的效果 發現 你有乙個臨時變數,只被乙個簡單表示式賦值一次,而它妨礙了其它的重構手法。解決 將所有對該變數的引用動作,替換為對它賦值的那個表示式自身。重構前 ...

筆記 內聯函式

內聯函式 示例1 include using namespace std inline int func int 定義乙個類的內聯函式 int func int x int main 示例2 include using namespace std class a private int x void...

學習筆記 內聯函式

1.什麼是內聯函式?內聯函式,從形式上看就是普通函式首部前新增了乙個inline,形式如下 inline 引數列表 語句 2.為什麼引進內聯函式?內聯函式與普通函式的區別在於,內聯函式的呼叫不會轉移程式控制權,而是在呼叫點處進行 內聯 展開函式體,類似於巨集展開 區別在於巨集展開是由預處理器負責,而...