IntelliJ IDEA重命名重構(gòu)

2018-11-09 11:09 更新

IntelliJ IDEA 重命名重構(gòu)允許您重命名類(lèi)、接口、枚舉和注釋?zhuān)⒆詣?dòng)更正代碼中的所有引用。

IntelliJ IDEA 中提供了以下重命名重構(gòu):

  • 重命名包。以下用法被重新命名:Package 語(yǔ)句、Import 語(yǔ)句、類(lèi)的合格名稱(chēng)。
  • 重命名類(lèi)。以下用法被重新命名:Import 語(yǔ)句、類(lèi)的合格名稱(chēng)、具有選定類(lèi)類(lèi)型的變量、類(lèi)繼承者.
  • 只有安裝了 Ruby 插件才支持此功能。
  • Ruby 腳本。在 Ruby 腳本中重命名適用于所有符號(hào),并將更改傳播到項(xiàng)目中的所有用法。
  • Ruby 類(lèi)。重命名一個(gè) Ruby 類(lèi)的結(jié)果取決于調(diào)用的位置和包含的文件名。首先,如果已從模板創(chuàng)建了 Ruby 類(lèi),則包含的文件名與指定的類(lèi)名匹配。因此,從編輯器中重命名 Ruby 類(lèi)將導(dǎo)致根據(jù) Ruby 命名約定生成新的文件名。如果包含文件的名稱(chēng)與類(lèi)名稱(chēng)不匹配,則只重命名該類(lèi)及其用法。其次,如果從 "項(xiàng)目" 工具窗口調(diào)用重命名重構(gòu),則只更改文件名; 包含的類(lèi)的名稱(chēng)將保持不變。
  • Rails 應(yīng)用程序的組件。Rails 應(yīng)用程序中的重命名適用于應(yīng)用程序元素(類(lèi)、控制器、操作、助手、幫助器、視圖)及其用法。建議使用項(xiàng)目工具窗口的 Rails 視圖或編輯器來(lái)重命名 Rails 應(yīng)用程序的元素。在 Rails 應(yīng)用程序中重命名重構(gòu)有以下幾點(diǎn)細(xì)節(jié):
    • 在重命名操作或視圖模板時(shí),所有關(guān)聯(lián)的實(shí)體都被重命名,包括測(cè)試。但是,在重命名測(cè)試時(shí),它的相關(guān)實(shí)體不會(huì)重命名。
    • 重命名時(shí),請(qǐng)記住新名稱(chēng)應(yīng)符合 Rail s命名約定;否則名字將不能被正確識(shí)別。這意味著,當(dāng)你重新命名,例如,MyController 到 YourController,你只需要改變 My 到 Your,留下 Controller 后綴不變。
    • 在重命名一個(gè)控制器或視圖,它在 RSpec 測(cè)試中的用法只會(huì)在“評(píng)論和字符串中搜索”選項(xiàng)已啟用時(shí)被重命名。
    • 重命名 Rails 模型時(shí),所有的用法也被重新命名:底層的文件、類(lèi)、測(cè)試類(lèi)和夾具。IntelliJ IDEA 創(chuàng)建一個(gè)遷移,并使用指令重命名相應(yīng)的表。當(dāng)模型中的某個(gè)字段被重命名時(shí),IntelliJ IDEA 將創(chuàng)建一個(gè)遷移,其中包含指令重命名表中對(duì)應(yīng)的列及其外鍵(如果有的話(huà))。
  • 命名范圍。這樣做,將重命名的作用域作為方法被調(diào)用的代碼行也被重命名。
  • Sass 選擇器
  • 重命名方法。以下用法被重新命名:該方法的所有調(diào)用;所有在子類(lèi)中重寫(xiě)/實(shí)現(xiàn)的方法。
  • 重命名字段。
  • 重命名函數(shù)。
  • 重命名變量。
  • 重命名參數(shù)。以下用法被重新命名:參數(shù)的所有用法;文檔注釋中相應(yīng)的參數(shù)標(biāo)記。
  • 重命名 CSS 顏色值。
  • 重命名文件。
  • 重命名目錄。
  • 在 Grails 應(yīng)用程序中重命名視圖和視圖的引用。

重命名重構(gòu)示例

示例-重命名一個(gè)類(lèi)

重構(gòu)前:

public class MyClass {
    // some code here
}
    ...
    public void myMethod() {
        MyClass myClass = new MyClass();
    }

重構(gòu)后:

public class  YourClass {
    // some code here
}
    ...
    public void myMethod() {
        YourClass yourClass = new YourClass();
    }


示例-重命名一個(gè)方法

注意:只有安裝了 Python 插件才支持此功能。

重構(gòu)前:

def  was_published_today(self):
return  self.pub_date.date () == datetime.date.today()

重構(gòu)后:

def  published_today(self):
return  self.pub_date.date () == datetime.date.today()

示例-重命名模板

注意:只有安裝了 Python 插件才支持此功能。

重命名模板:

IntelliJ IDEA重命名重構(gòu)

這樣做,下列用法將被重命名:

IntelliJ IDEA重命名重構(gòu)

示例-重命名 Ruby/Rails 符號(hào)

注意:只有安裝了 Ruby 插件才支持此功能。

用匹配的文件名重命名 Ruby 類(lèi):

操作前:

MyClass - my_class.rb

操作后:

YourClass - your_class.rb

重命名 Rails 方法:

操作前:

def bar(a,b,c)
    return a * b + c * 123
end
def foo
    a = 0
    b = 1
    c = 2
    return bar (a,b,c)
end

操作后:

def do_smth (a,b,c)
    return a * b + c * 123
end
def foo
    a = 0
    b = 1
    c = 2
    return do_smth (a,b,c)
end

重命名 Rails 模型:

操作前:

Model Library.
The following symbols should be renamed:

Class Library
Fixture library.yml
Test class library_test.rb
Test class LibraryTest.rb
File library.rb

操作后:

Model Books.
As a result of performing the Rename refactoring, IntelliJ IDEA creates a migration. Execute the migration to have the following symbols actually renamed:

Class Books
Fixture books.yml
Test class books_test.rb
Test class BooksTest.rb
File books.rb

重命名范圍及其用法:

操作前:

Class Word
    scope :word_length, lambda {|word_length| where :char_count => word_length}
end

assert_equal 0, Word.word_length(0).size

操作后:

Class Word
    scope :word_length1, lambda {|word_length| where :char_count => word_length}
end

assert_equal 0, Word.word_length1(0).size

重命名符號(hào)

  1. 選擇要重命名的項(xiàng)目。
    • 要選擇一個(gè)文件,請(qǐng)?jiān)?"項(xiàng)目" 工具窗口中單擊所需的文件。
    • 要在編輯器中選擇符號(hào),請(qǐng)將插入符號(hào)放在要重命名的元件的名稱(chēng)上。
    • 若要在 "項(xiàng)目" 工具窗口中選擇一個(gè)符號(hào),請(qǐng)確保顯示了這些成員,然后單擊所需的符號(hào)。
    • 若要在 "結(jié)構(gòu)" 視圖中選擇符號(hào),請(qǐng)?jiān)?"結(jié)構(gòu)" 工具窗口中單擊所需的符號(hào)。
  2. 在主菜單或上下文菜單上選擇:重構(gòu)| 重命名,或按 Shift+F6。
  3. 隨后的行為取決于復(fù)選框啟用就地模式 (設(shè)置/首選參數(shù)對(duì)話(huà)框、編輯器)。
    • 如果選中此復(fù)選框,則建議的名稱(chēng)將出現(xiàn)在相關(guān)符號(hào)的正下方。您可以接受建議,也可以輸入新的名稱(chēng)。但是,如果再次按 Shift+F6,IntelliJ IDEA 將顯示   "重命名" 對(duì)話(huà)框,其中有更多選項(xiàng)。
    • 如果這個(gè)復(fù)選框沒(méi)有被選中,則會(huì)立即打開(kāi) "重命名" 對(duì)話(huà)框。

    這組控件及其名稱(chēng)取決于要重命名的符號(hào)的類(lèi)型。

  4. 如果您希望 IntelliJ IDEA 查找和重命名與重命名類(lèi)相關(guān)的對(duì)象(其名稱(chēng)包含更改的字符串),請(qǐng)選中以下一個(gè)或多個(gè)選項(xiàng):
    • 重命名變量以重命名該類(lèi)類(lèi)型的變量。
    • 重命名繼承器來(lái)重命名類(lèi)繼承者。
    • 重命名綁定窗體來(lái)重命名綁定到該類(lèi)的 GUI 窗體。

    如果您選擇重命名綁定到重命名類(lèi)的任何對(duì)象,IntelliJ IDEA 將搜索相應(yīng)的項(xiàng)目并按照類(lèi)型排序的對(duì)話(huà)框順序顯示它們。在每個(gè)對(duì)話(huà)框中,您可以選擇要更改的項(xiàng)目。

  5. 預(yù)覽并應(yīng)用更改。

重命名文件或目錄

  1. 在項(xiàng)目工具窗口中選擇所需的文件。
  2. 在主菜單或上下文菜單上選擇:重構(gòu)| 重命名或按 Shift+F6。
  3. 在打開(kāi)的重命名文件對(duì)話(huà)框中,指定新的文件名。選擇“在 comments 和 strings 中搜索”復(fù)選框,讓 IntelliJ IDEA 將更改應(yīng)用到注釋和字符串。
  4. 按預(yù)覽以觀察工具窗口可能發(fā)生的變化。按重構(gòu)以繼續(xù)。IntelliJ IDEA 查找文件名的所有出現(xiàn)并分別改變它們。

重命名文件也可以在編輯器選項(xiàng)卡中找到:

ij_rename_from_editor_tab

這樣做,要重命名的文件將被覆蓋。

    重要筆記

    • 局部變量被重新命名。
      IntelliJ IDEA 
      只有安裝了 Python 插件才支持此功能。
      IntelliJ IDEA 
      為了能夠在重命名局部變量時(shí)使用重命名對(duì)話(huà)框,你應(yīng)該在編輯器設(shè)置中禁用就地重構(gòu)。
    • 只有安裝了 Python 插件才支持此功能。
      重命名 Gherkin 步驟時(shí),請(qǐng)注意以下限制:
      • 步驟定義不應(yīng)包含正則表達(dá)式.
      • 步驟名稱(chēng)只能包含字母數(shù)字字符。
      • 在不同的框架中,步驟定義應(yīng)該只有一個(gè)。
      • 在步驟和步驟定義之間應(yīng)該有一個(gè) "一對(duì)一" 的映射。
    以上內(nèi)容是否對(duì)您有幫助:
    在線筆記
    App下載
    App下載

    掃描二維碼

    下載編程獅App

    公眾號(hào)
    微信公眾號(hào)

    編程獅公眾號(hào)