最新PyCharm基本使用(3)------编码(Code)、重构(Refactor)
目錄
六、PyCharm中代碼的填充、補充、檢查、分析、清理等操作
七、PyCharm中的重命名、更改簽名、提取、引入、內聯(復原)、安全刪除、調整、轉換等重構操作
六、PyCharm中代碼的填充、補充、檢查、分析、清理等操作
Code(編碼)菜單
? ? ? ? PyCharm的Code菜單的選項如圖6-1所示,是PyCharm中代碼自動填充、補充、檢查、分析、清理、展開、折疊、格式規范、縮進、優化導入、移動等編碼操作,菜單中有代碼操作選項及其快捷鍵。PyCharm根據上下文感知,能自動填充、補充、檢查、分析等,提高我們編程速度,且提高代碼質量。
圖6-1? PyCharm的Code菜單
Override Methods
? ? ? ?重寫方法。鼠標放在類中的任何位置,選擇該項后,重寫(重載)父類的方法,父類的方法在子類中生成,然后在生成的方法中,我們可以寫入代碼。
Implement Methods
? ? ? ?實現方法。選擇該項能填充方法的內容,使得實現方法的功能。
Generate
? ? ?生成。該選項根據光標位置對應彈出菜單,菜單集合了Override Methods、Implement Methods、Test、或Copyright等選項。
Code Completion
? ? ? ?代碼完成。選擇該選項彈出的菜單中的選項,能自動補充代碼相關的內容,加快我們寫代碼的速度。比如:菜單中Basic可以幫我們填入有關類、方法和關鍵字的名稱。
Inspect Code
? ? ? ?檢查代碼。根據指定的檢查范圍進行檢查,并顯示該范圍內代碼存在的問題。檢查代碼是依據File→Settings→ Editor → Inspections中提供的相關策略進行檢查。
Code Cleanup
? ? ? ?代碼清理。該選項是根據指定的范圍,在該范圍中找到可能有問題的代碼片段并立即自動修復它們。
Analyze Code
? ? ? 分析代碼。選擇該選項的菜單中的選項,可以完成特定代碼分析,比如:Run Inspection by Name,可以根據名稱指定一個檢查(名詞,一般是一個文件),并用這個檢查(名詞)來檢查(動詞)我們指定范圍內的代碼,也即選擇該選項后,在彈出窗口先確定一個檢查(名詞),確定后再在新窗口中指定范圍,然后確定后就可以進行代碼審查。
Analyze Stack Trace or Thread Dump
? ? ? ?分析堆棧跟蹤或線程轉儲。像死鎖(Deadlock)、死機等異常,這些異常沒有幫助您導航到源代碼中相應位置的鏈接,使用PyCharm,我們可以復制異常產生的堆棧軌跡,或復制完整的線程轉儲,將其粘貼到選擇該選項彈出的Stack trace Analyzer窗口,確定后可以導航到相應的源代碼。 ??
? ? ? ?Stack Trace(堆棧跟蹤,堆棧軌跡),異常發生時會產生一個堆棧軌跡。其中,棧(stack),又名堆棧,是一種只能在一端(棧頂)進行插入和刪除操作的特殊線性表(在內存中為動態內存區域),棧一般存放函數的地址、對象的引用地址等,堆棧追蹤(堆棧軌跡,stack trace)是對程序運行過程的活動記錄的描述。
? ? ? Thread Dump(線程轉儲) 包含的內容:線程,線程運行狀態、標識和調用的堆棧,堆棧包含完整的類名及所執行的方法,源代碼的行數等。線程(英語:thread)是操作系統能夠進行運算調度的最小單位。它被包含在進程之中,是進程中的實際運作單位。一條線程指的是進程中一個單一順序的控制流,一個進程中可以并發多個線程,多個線程并行可以執行不同的任務。
? ? ? ?死鎖是指兩個或兩個以上的進程在執行過程中,由于競爭資源或者由于彼此通信而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。
Insert Live Template
? ? ? ?插入活動模版。選擇該選項可在光標位置根據活動模板創建代碼構造(比如:某個固定的代碼語句)。選擇該選項會彈出菜單,菜單中是已經存在的Live Template(活動模版),選擇某個模板,光標位置會自動生成這個模板代表的內容。
? ? ? 該選項會彈出菜單中的模版一般是默認自帶模版,我們也可以在File→Settings→ Editor → Live Template中可以根據自己的需要來創建模版,比如:在File→Settings→ Editor → Live Template彈出的窗口選中Python模版組(模板群),點擊該窗口右側加號(+),里面有Live Template和Template Group(創建模版組,模版組名稱下面可以放多個模版)兩個選項,選擇Live Template,窗口下面輸入Abbreviation(模版的縮寫,也即模版名稱),Description(模版的描述),Template text(模版文本,也即模版內容),確定后即可自定義創建一個Python的新模版。
? ? ? ?注意,這里的Live Template選項與File→Save File as Template是不同的概念。
Save as Live Template
? ? ? ?另存為活動模版。先選擇代碼的某個內容,然后選擇該選項能創建一個Live Template(活動模版),實際也是默認在File→Settings→ Editor → Live Template中user模板組下創建模版。
Surround With
? ? ? ?環繞,能創造代碼構造。光標放在某行代碼,選擇該選項彈出菜單的選項,可以在該行代碼周圍生成對應的代碼語句,比如:if語句、while語句、注釋等。該選項彈出菜單中的選項是Pycharm根據該行代碼上下文來確定的,當該行代碼不能產生環繞時,提示Couldn't find Surround With variants applicable to the current context(找不到適用于當前上下文的環繞變體)。
Unwrap/Remove
? ? ? ?展開或移除,從封閉語句中快速展開或提取表達式。比如:光標放在if體內某個位置,選擇該項后,會自動選中上下同一層次的代碼語句,并彈出確定Unwrap/Remove的提示窗口(窗口的選項會根據被選中語句的上下文生成),確定后會自動提取出這些被選擇的語句,并去掉了if條件。該選項操作比較適合if、while、for等控制結構的語句。
Folding
? ? ? ?折疊。光標放在某個位置或選中某個區域,選擇該選項的菜單中的選項,可以展開和折疊對應的代碼。比如:選擇菜單中的Collapse,會折疊隱藏相關代碼,選擇菜單中的Expand,或展開相關代碼。
Comment with Line Comment
? ? ? ? 行注釋,選擇該選項后,光標所在行的開頭會自動增加注釋符號,該行成為注釋行。
Comment with Block Comment
? ? ? ? 塊注釋,多行注釋,這些多行變為注釋行。
Reformat Code
? ? ? ?重新格式化代碼(代碼格式規范),自動調整、對齊、規范代碼,使得代碼空格間隔更規范,增強可讀性。
Reformat File
? ? ? ?可以對整個文件的代碼進行格式化。能對整個文件的代碼進行自動調整、對齊、規范、清理等等,使得整個文件代碼空格間隔更規范,增強可讀性。該選項的菜單中還可以進行格式化的一些選項設置,比如:勾選該選項的菜單中Optimize Imports,可以去掉未使用的import語句,這里的Optimize Imports與下面即將講到的Optimize Imports選項的效果一樣。
Auto-Indent Lines
? ? ? ?自動縮進。選擇該項,光標所在的行或選中的代碼會根據上下文向左或向右自動縮進。
Optimize Imports
? ? ? ?優化導入。可以去掉文件中未使用、或重復的導入,而且還可以組織(規劃)導入語句。
Rearrange Code
? ? ? ?重排代碼,可根據排列規則重新排列代碼。Python不支持此操作。
Move Statement Down
? ? ? ?向下移動語句。鼠標所在位置對應的行或代碼塊會向下移動。比如:在類里面,光標在定義的方法名的位置,選擇該項后,該方法整體下移,與類中下面的方法交換位置。
Move Statement Up
? ? ? ?向上移動語句,與上面Move Statement Down相反。
Move Element Left,Move Element Right
? ? ? ?向左移動光標位置的元素,向右移動光標位置的元素。
Move Line Down,Move Line Up
? ? ? ?向下移動一行,向上移動一行,類似Move Statement Down,Move Statement Up,但只能移動一行。
Update Copyright
? ? ? ?更新版權。
七、PyCharm中的重命名、更改簽名、提取、引入、內聯(復原)、安全刪除、調整、轉換等重構操作
Refactor(重構)菜單
? ? ? ?PyCharm的Refactor菜單的選項如圖7-1所示,Refactor菜單的選項由當前上下文決定的,是PyCharm中重命名、更改簽名、提取、引入、內聯、安全刪除、調整、轉換等重構操作,菜單中有重構操作選項及其快捷鍵。重構,重新改變、改進。代碼重構一般是在不創建新功能的情況下改進源代碼,重構有助于保持代碼的穩固和易于維護。
?圖7-1? PyCharm的Refactor菜單
Refactor This
? ? ? ?重構,重新改變、改進。代碼重構是在不創建新功能的情況下改進源代碼,重構有助于保持代碼的穩固和易于維護。光標選擇(或懸停在)要重構的符號或代碼片段,選擇該選項,彈出重構菜單的選項(菜單選項由光標所在位置的上下文決定),比如:對類或方法重命名(Rename,用法同下面講到的Rename一樣)、Change Signature(更改簽名,用法同下)、引入變量(Introduce Variable)、引入常數(Introduce Constant)等。若不能重構,會提示Cannot perform refactoring using the selected element(無法使用所選元素(選項)執行重構)。
? ? ? ? 該選項彈出菜單中的選項很多也是下面即將講到的選項。
Rename
? ? ? ?對變量、函數、類、或方法等重命名,選擇該選項彈出修改光標所在位置名稱的窗口,有的注意選擇修改范圍(Scope),比如:修改類名時可以針對整個項目,也可以選擇針對當前文件。
Change Signature
? ? ? ?更改簽名,可以更改項目當前目錄下文件中的函數名或方法名,或添加、刪除、重新排序、重命名其參數,并且這個目錄下所有文件中相同調用(包括繼承)層次的也發生同樣的改變,比如:項目當前目錄中文件中的類AA中方法func,選擇Change Signature,在彈出的菜單中改func方法名,當前文件中func方法會改名,而且在項目當前目錄中所有文件,只要是有AA.func或繼承調用中的func也都會改名。
? ? ? ?因此,該選項比較特殊,通過該選項時,要注意對其它文件的影響,該選項設置重構時,可以先進行Preview(預覽),查看將對其它文件的改變。
Extract/Introduce
? ? ? ?提取(摘錄)或引入,該選項根據光標的操作及上下文來確定提取(摘錄)或引入。若光標未選中或選中某個名稱,默認引入,若光標選中某個表達式,則是提取,比如:用光標選中某個表達式,再選擇該選項彈出菜單中的Variable選項,則把這個表達式賦給一個新變量,且用這個新變量來引用(表示)這個表達式。若不能提取(摘錄)或引入,會提示Cannot perform refactoring using the selected element(無法使用所選元素(選項)執行重構)。
? ? ? ?該選項彈出的菜單中主要有Variable(變量)、Constant(常量)、Field(字段,提供給計算機識別,類似變量這種指代作用,常用在數據庫中)、Parameter(參數,比如:函數的參數)、Method(方法)、Superclass(超類,父類)等選項。
Inline
? ? ? 內聯,復原。內聯重構,相當于上面Extract的逆操作,是方法或變量的提取(Extract)的逆操作。比如:鼠標放在變量或選中變量,然后選中該選項即可還原提取,也即恢復到提取前原來的表達。對方法進行內聯重構,彈出的菜單中有Inline all invocations and remove the declaration 和Inline all invocations and keep the declaration兩個選項,前者是內聯所有調用并刪除聲明(定義的這個方法),后者是內聯所有調用并保留聲明(定義的這個方法)。
Move File
? ? ? ? 移動當前文件到某個文件夾。
Copy File
? ? ? ? ?復制當前文件到某個文件夾。
Safe Delete
? ? ? ?安全刪除。安全刪除重構可以安全地刪除文件。在PyCharm窗口左側的Project項目展示欄中選中文件,然后選擇該選項,提示是否安全刪除該文件,該操作在刪除時會檢查是否存在外部使用,若存在引用,將打開“檢測到的使用情況”方對話框。
Pull Members Up
? ? ? ?向上拉成員,該重構可以將類中的成員移動到超類(父類)。移動變量需要光標選中定義的變量,移動方法只需光標放到定義的方法的位置。
Pull Members Down
? ? ? ? ?下拉成員,該重構與Pull Members Up相反,可以將父類中的成員移動到子類。
Invert Boolean
? ? ? ?反轉布爾值,該重構可以將布爾變量的值及其所有用法從True轉換為False,反之亦然。光標放在變量位置,選擇該選項即可實現。比如:原來:
def func():c1 = Truereturn c1選該選項操作后:
def func():c1 = Falsereturn not c1Convert to Python Package
? ? ? ? 把模塊(module)轉換為包(也可以叫著庫),在PyCharm窗口左側的Project項目展示欄中選中模塊(比如:.py文件),選擇該選項即可生成包。
Convert to Python Module
? ? ? ?把包轉換為模塊(module),是Convert to Python Package的逆操作,在PyCharm窗口左側的Project項目展示欄中選中包,選擇該選項即可生成模塊。
最后,歡迎你點贊、收藏、關注!
總結
以上是生活随笔為你收集整理的最新PyCharm基本使用(3)------编码(Code)、重构(Refactor)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 双窗格文件管理器:Commander O
- 下一篇: 无盘服务器吃鸡卡,无盘新手必备知识