Xcode重構(gòu)功能怎么用我全告訴你

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

我先插一句:有些新手可能不太理解什么是重構(gòu),為什么重構(gòu),如何重構(gòu)。作為一個老司機我就給你們指指路。程序員必讀之:重構(gòu):改善既有代碼的設計。這個是亞馬遜的鏈接。如果沒有讀過可以下單了。

Xcode提供了以下幾個重構(gòu)功能:

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

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

在代碼區(qū)里直接右鍵也能出現(xiàn)重構(gòu)的相關(guān)菜單:


下面就分別介紹這些重構(gòu)功能的使用。

Rename:重命名

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


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

Extract:將代碼抽取為一個單獨的方法或函數(shù)

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



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


在預覽時如果發(fā)現(xiàn)有些需要調(diào)整,可以直接在預覽框編輯。
下面是抽出一個doubleValue方法的預覽:

Create Superclass:創(chuàng)建父類

這個很好理解了,就是創(chuàng)建一個當前類的父類。要注意的是要選中類名的時候才能成功觸發(fā)。
需要注意的是預覽界面最左邊的導航區(qū),選擇中間一個是這次重構(gòu)會影響到文件列表??梢渣c擊到這個tab下查看其它類的改動。



如果有警告,會默認顯示警告的tab。

Move Up & Move Down

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

Encapsulate:封裝

這是一個令人懷念的詞,多年后看到還是會想起期末考試里面向?qū)ο笕筇攸c的填空題。
這個的作用是在你選中一個變量后,會自動幫你生成get、set方法。
下面是我將variableStr變量封裝后的預覽:


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

一件悲傷的事

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


refactor-keybindings.png

一件更悲傷的事

喜新厭舊的我在使用swift時,選擇了一個extract后,出現(xiàn)了下面的提示框。



我心中:

歡迎關(guān)注我的微博:@沒故事的卓同學

相關(guān)鏈接:
https://developer.apple.com/library/ios/recipes/xcode_help-source_editor/chapters/RefactorWorkflow.html#//apple_ref/doc/uid/TP40009975-CH17-SW1

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容