Xcode重構功能怎麼用我全告訴你

發表於2016-02-02

你會經常需要重構你的程式碼,讓它有更好的結構,可讀性或者提高可維護性。Xcode作為IDE其實提供了一些幫助dev重構的功能。你以前可能沒有注意到,今天我來給大家介紹一下Xcode中提供的這些幫助重構的功能的使用。

我先插一句:有些新手可能不太理解什麼是重構,為什麼重構,如何重構。作為一個老司機我就給你們指指路。程式設計師必讀之:重構:改善既有程式碼的設計。這個是亞馬遜的連結。如果沒有讀過可以下單了。

Xcode提供了以下幾個重構功能:

  • Rename
  • Extract
  • Create Superclass
  • Move Up
  • Move Down
  • Encapsulate

在選單欄中的位置如下圖:

在程式碼區裡直接右鍵也能出現重構的相關選單:

下面就分別介紹這些重構功能的使用。

Rename:重新命名

幾乎可以試用所有symbol:類名,方法名,函式名,屬性名等。使用起來非常簡單,選中一個要命名的符號後,選擇rename,就會彈出一個輸入框讓你輸入要想要的新名稱,輸入完成後點選preview可以預覽一下。

修改一個屬性名稱後的預覽

Extract:將程式碼抽取為一個單獨的方法或函式

選中一段程式碼後(可以包括註釋),選擇Extract,會分析你選擇的程式碼段後自動生成方法簽名。你可以修改方法名,如果引數、返回值不正確也可以自己再修改。

如果選擇了function,就是另外一種格式:

在預覽時如果發現有些需要調整,可以直接在預覽框編輯。
下面是抽出一個doubleValue方法的預覽:

Create Superclass:建立父類

這個很好理解了,就是建立一個當前類的父類。要注意的是要選中類名的時候才能成功觸發。
需要注意的是預覽介面最左邊的導航區,選擇中間一個是這次重構會影響到檔案列表。可以點選到這個tab下檢視其它類的改動。

如果有警告,會預設顯示警告的tab。

Move Up & Move Down

  • Move Up
    可以將一個方法、例項變數移動到父類中去。觸發時和重新命名一樣,要選中例項名或者方法名後才能正常使用。在category中不適用。
  • Move Down
    相反,將選中的例項變數移動到子類中。
    是的,方法就不能移到子類了。邏輯上很難理解為什麼是這樣。但是蘋果爸爸就是這麼任性。

Encapsulate:封裝

這是一個令人懷念的詞,多年後看到還是會想起期末考試裡物件導向三大特點的填空題。
這個的作用是在你選中一個變數後,會自動幫你生成get、set方法。
下面是我將variableStr變數封裝後的預覽:

一些新手可能不太理解這個功能。因為在宣告property時就已經自動生成了get、set方法。所以這個功能應該是有點過時了。
如果用過eclipse的同學可能要呵呵了,這個我們懂。

一件悲傷的事

以上這些重構功能並沒有快捷鍵。
雖然好像有我也記不住啊!
別這樣,白要誰不要。
那麼如果我就是裝逼快捷鍵黨,不想讓別人知道我選用了這個功能怎麼辦呢?
也許全世界你也可以忘記,至少還有key binding值得你去珍惜:

refactor-keybindings.png

一件更悲傷的事

喜新厭舊的我在使用swift時,選擇了一個extract後,出現了下面的提示框。

我心中:

相關文章