




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】詳解AndroidStudio中代碼重構(gòu)菜單Refactor功能
代碼重構(gòu)幾乎是每個(gè)程序員在軟件開(kāi)發(fā)中必須要不斷去做的事情,以此來(lái)不斷提高代碼的質(zhì)量。AndroidStido(以下簡(jiǎn)稱AS)以其強(qiáng)大的功能,成為當(dāng)下Android開(kāi)發(fā)工程師最受歡迎的開(kāi)發(fā)工具,也是Android官方推薦使用的工具。如此優(yōu)秀的工具,自然少不了要在代碼重構(gòu)這件事情上好好表現(xiàn)一把了。本文將通過(guò)代碼演示,功能截圖來(lái)詳細(xì)介紹AS為代碼重構(gòu)提供的各項(xiàng)功能。在AS的主菜單欄中有一項(xiàng)“Refactor”下拉菜單,點(diǎn)擊該下拉菜單,會(huì)看到如下的界面,菜單中的每一項(xiàng),都是為代碼重構(gòu)提供的一項(xiàng)自動(dòng)實(shí)現(xiàn)功能。這么多的功能項(xiàng),可見(jiàn)AS在代碼重構(gòu)功能上的強(qiáng)大,下面我們對(duì)這些功能項(xiàng)一一進(jìn)行介紹。另外,還可以在編輯界面中點(diǎn)擊右鍵,在彈出的菜單中也可以找到“Refactor”。1、RefactorThis作用:重構(gòu)當(dāng)前。操作此項(xiàng),會(huì)顯示對(duì)當(dāng)前光標(biāo)選中處可行的重構(gòu)方法。示例:選擇了類名“RefactorTest”,操作“RefactorThis”后,顯示了可執(zhí)行的重構(gòu)方法列表,可以通過(guò)選擇數(shù)字來(lái)執(zhí)行對(duì)應(yīng)的方法。2、Rename作用:對(duì)光標(biāo)選中項(xiàng)進(jìn)行重命名。不僅可以對(duì)類中的成員變量進(jìn)行重命名,還能對(duì)文件名,包名等進(jìn)行重命名,Module中與之相關(guān)聯(lián)的所有地方都會(huì)一起修改,而不用一一手動(dòng)修改??旖萱I:Shift+F6示例:在紅框中輸入修改后的名稱,并按Enter鍵即可。3、RenameFile作用:修改當(dāng)前編輯界面顯示的文件的文件名。就相當(dāng)于鼠標(biāo)選中該文件,并執(zhí)行“Rename”方法。示例:在顯示的對(duì)話框中輸入新文件名??梢栽谙路降倪x項(xiàng)框中選擇修改范圍,引用該文件的地方,注釋,字符串中都可以選擇一起修改。4、ChangeSignature作用:修改方法、類、構(gòu)造函數(shù)的簽名,其實(shí)就是修改所選項(xiàng)的一些屬性??旖萱I:Ctrl+F6
示例:如下展示了一個(gè)方法重構(gòu)前,重構(gòu)過(guò)程,以及重構(gòu)后的情形(以修改一個(gè)方法簽名為例)。重構(gòu)前:選中方法名后,執(zhí)行該重構(gòu)方法后,會(huì)彈出如下對(duì)話框,可以對(duì)該方法各種屬性進(jìn)行修改,添加/刪除參數(shù),調(diào)整參數(shù)順序,新增/刪除異常等。重構(gòu)后:5、TypeMigration作用:類型遷移,即對(duì)變量數(shù)據(jù)類型,或者方法的返回類型進(jìn)行修改。前面介紹了對(duì)文件名,包名,變量名等進(jìn)行修改,這里對(duì)類型進(jìn)行修改??旖萱I:Ctrl+Shift+F6重構(gòu)前:選中要修改的類型,執(zhí)行該重構(gòu)方法,會(huì)彈出對(duì)話框,根據(jù)需要編輯類型,選中作用范圍即可。指定范圍內(nèi),與該變量相關(guān)聯(lián)處都會(huì)被修改。重構(gòu)后(由于從int修改到String,所以還需要手動(dòng)修改變量值):6、MakeStatic作用:給內(nèi)部類或者方法添加static關(guān)鍵字。示例比較簡(jiǎn)單,就不做演示了。7、ConvertToInstanceMethod作用:轉(zhuǎn)換為實(shí)例方法,即將靜態(tài)方法去掉static關(guān)鍵字。8、Move功能:移動(dòng)文件到指定路徑快捷鍵:F69、Copy作用:在指定包中拷貝一份當(dāng)前文件快捷鍵:F5
10、SafeDetele作用:安全刪除,可用于對(duì)方法/字段等進(jìn)行快速刪除,會(huì)刪除掉與之相關(guān)聯(lián)的引用??旖萱I:Alt+Delete11、Extract(1)Variable作用:提取變量。這一點(diǎn)在碰到比較長(zhǎng)的表達(dá)式時(shí)經(jīng)常用到,將看起來(lái)很長(zhǎng)很復(fù)雜的表達(dá)式提取出來(lái)作為一個(gè)變量表示??旖萱I:Ctrl+Alt+V重構(gòu)前:我們常會(huì)看到這樣的代碼第二行的要打印的信息表達(dá)式太長(zhǎng)了,希望單獨(dú)提取出來(lái)用一個(gè)變量表示。本示例中鼠標(biāo)停留在第2行“getAaaaaaaaaaaaaaaaaaaaaaaaaaaAge”處,執(zhí)行該重構(gòu)方法,會(huì)彈出如下紅框部分對(duì)話框,顯示的是選中表達(dá)式相關(guān)的可提取部分,根據(jù)需要選擇要提取的部分即可。重構(gòu)后:(2)Constant作用:提取常量,將表達(dá)式中的值提取為常量??旖萱I:Ctrl+Alt+C重構(gòu)前:重構(gòu)后:(3)Filed作用:提取字段,將局部變量提取為全局變量??旖萱I:Ctrl+Alt+F重構(gòu)前:重構(gòu)后:(4)Parameter作用:將局部變量提取為方法的參數(shù)??旖萱I:Ctrl+Alt+P重構(gòu)前:重構(gòu)后:(5)FunctionalParameter(函數(shù)式參數(shù))Ctrl+Alt+Shift+P(6)ParameterObject作用:將參數(shù)提取為一個(gè)對(duì)象。該功能主要是針對(duì)參數(shù)比較多的時(shí)候,將這些參數(shù)提取出來(lái)作為一個(gè)Bean實(shí)例傳入。重構(gòu)前:重構(gòu)后:(7)Mehtod作用:提取為方法快捷鍵:Ctrl+Alt+M重構(gòu)前:鼠標(biāo)光標(biāo)選中第2~5行后執(zhí)行該重構(gòu)方法重構(gòu)后:(8)TypeParameter(9)MethodObject作用:將該選中的內(nèi)容提取為一個(gè)方法,并提取到一個(gè)獨(dú)立的類中。和“Method”很類似,不同的是提取的方法最后放在哪里。重構(gòu)前:重構(gòu)后:(10)Delegate作用:提取為一個(gè)代理類。重構(gòu)前:重構(gòu)后:(11)Interrface作用:提取為接口。重構(gòu)前:public修飾的方法才可以被提取到接口中。重構(gòu)后:(12)Superclass作用:將指定內(nèi)容提取到父類中。重構(gòu)前:重構(gòu)后:12、Inline作用:轉(zhuǎn)換為內(nèi)聯(lián)、方法鏈形式的調(diào)用。快捷鍵:Ctrl+Alt+N重構(gòu)前:重構(gòu)后:原先需要調(diào)用一個(gè)方法,重構(gòu)后直接把該方法中的代碼給復(fù)制過(guò)來(lái)了。因?yàn)樯厦孢x中的是內(nèi)聯(lián)所有的,并且刪除該方法,所以add方法也就被刪除了。13、FindandReplaceCodeDuplicates14、InvertBoolean作用:轉(zhuǎn)換Boolean值,將當(dāng)前false/true的值進(jìn)行轉(zhuǎn)化為相反的值。重構(gòu)前:重構(gòu)后:15、PullMembersUp作用:將子類的成員上移到父類中。重構(gòu)前:重構(gòu)后:16、PushMembersDown作用:將父類中的成員下移到子類中,正好是“PullMembersUp”的反向操作。重構(gòu)前:重構(gòu)后:17、UseInterfaceWherePossible18、ReplaceInheritancewithDelegation作用:使用代理替代繼承。在java中,提倡使用組合,而不是繼承。重構(gòu)前:重構(gòu)后:這一部分有點(diǎn)像Android中Context,ContextWrapper,ContextImpl類之間的關(guān)系。19、RemoveMiddleman作用:移除中間人,其實(shí)就是移除中間過(guò)程。重構(gòu)前:重構(gòu)后:對(duì)比重構(gòu)前和重構(gòu)后會(huì)發(fā)現(xiàn),添加book這個(gè)動(dòng)作,從由BookManager的addBook方法來(lái)執(zhí)行,變成了直接有mBookList來(lái)執(zhí)行了。這個(gè)addBook就是這個(gè)MiddleMan,顯得多余,可以優(yōu)化掉。實(shí)際上優(yōu)化后就變成一個(gè)inline方式了,可以對(duì)比前面講到的“Inline”。20、WrapMethodReturnValue作用:封裝返回值重構(gòu)后:21、ConvertAnonymoustoInner作用:將匿名內(nèi)部類轉(zhuǎn)為內(nèi)部類。重構(gòu)前:重構(gòu)后:22、EncapsulateFields作用:封裝字段,用于生成Getter/Setter重構(gòu)前:通過(guò)該對(duì)話框,可以選擇要封裝的字段,設(shè)置修飾符等。默認(rèn)選擇時(shí),name字段的修飾符從public變成了private,這也就避免了外部類通過(guò)實(shí)例直接訪問(wèn)它。重構(gòu)后:23、ReplaceTempWithQuery24、ReplaceConstructorwithFactoryMethod作用:將構(gòu)造方法替換為工廠方法重構(gòu)前:重構(gòu)后:原先public修飾的構(gòu)造函數(shù),已經(jīng)變成private了,MyClass類只能通過(guò)工廠方法來(lái)獲取實(shí)例,而無(wú)法再直接new了。25、ReplaceConstructorwithBuilder作用:將構(gòu)造方法替換為Builder方式重構(gòu)前:重構(gòu)后:看到這里,我們應(yīng)該能夠聯(lián)想到AlertDialog類中的Builder了。將構(gòu)造函數(shù)的形式,轉(zhuǎn)變?yōu)榱私ㄔ煺吣J降男问?,這樣不會(huì)拘泥于構(gòu)造
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 經(jīng)理銷售工作計(jì)劃
- 保安年度工作總結(jié)范文(33篇)
- 大學(xué)生軍訓(xùn)感想(33篇)
- 六氟化硫知識(shí)培訓(xùn)課件
- 2025年專用票清分機(jī)合作協(xié)議書(shū)
- 梨園醫(yī)院整合推廣方案1
- 培訓(xùn)資料-胸腔鏡肺葉切除手術(shù)配合及護(hù)理
- 商場(chǎng)企業(yè)安全標(biāo)準(zhǔn)化
- 電子商務(wù)平臺(tái)開(kāi)發(fā)跨境電商運(yùn)營(yíng)與服務(wù)優(yōu)化方案
- 土方回填工程承包協(xié)議書(shū)
- 2024環(huán)氧磨石地坪施工技術(shù)規(guī)程
- 五年級(jí)下冊(cè)小學(xué)數(shù)學(xué)《分?jǐn)?shù)的加法和減法》單元作業(yè)設(shè)計(jì)
- 醫(yī)學(xué)文獻(xiàn)管理制度
- 旅游政策法規(guī)教案
- 白塞氏病學(xué)習(xí)課件
- 高頻電子線路課后習(xí)題
- 川教版六年級(jí)《生命.生態(tài).安全》下冊(cè)第1課《我們的閑暇時(shí)光》課件
- 2022年版初中物理課程標(biāo)準(zhǔn)解讀-課件
- 重大風(fēng)險(xiǎn)管控方案及措施客運(yùn)站
- 新編大學(xué)英語(yǔ)跨文化交際教程 課件 Unit 1-A Chinese Character
- 中醫(yī)護(hù)理望聞問(wèn)切
評(píng)論
0/150
提交評(píng)論