1. 程式人生 > >受用一生的 PyCharm 技巧大全(四)

受用一生的 PyCharm 技巧大全(四)

16. 快速定位到錯誤行

前幾天開啟 PyCharm,發現在導航欄這裡出現了很多紅色波浪線,有過 PyCharm 使用經驗的同學,這是程式碼出現了錯誤。

順著波浪線,我一層一層地展開目錄樹,終於找到了那個包含錯誤的檔案。由於是手誤,我也不知道我改動了哪一行,看了下這個檔案,有將近8000行的程式碼,難道一行一行地去找?

不,這絕對不是使用 IDE 正確的方式。

遇到問題,就應該嘗試去尋找快捷方法,有沒有辦法,可以一下子定位到錯誤程式碼呢?

這時候,我想起了PyCharm 有提供給我們一個 Keymap 的面板,可以很方便的設定、查詢快捷鍵。說不定我在那裡可以找到我想要的答案

我在搜尋框輸入 Error,就找到了快速定位到錯誤位置的快捷鍵F2

Shift+F2 可以快速的定位到錯誤行(Mac和Windows快捷鍵一樣)。

使用快捷鍵 F2 查看了下原來是這裡縮排有問題,導致語法出現錯誤。

17. 快速檢視最近的修改

上面為了恢復因為手誤造成的語法錯誤,我使用了快捷鍵來定位錯誤行,雖然解決了問題,但總有種繞了幾個彎的感覺。

假如有種方法,可以專案檢視最近的修改記錄的話(沒有git做版本控制的情況下),那就太好了。

太巧的是,今天我開啟 PyCharm ,就給我推了這條 tip,(在Mac上)使用 option+shift+C 可以快速檢視最近修改的內容(Windows 是Alt+Ahift+C)

18. 靜態程式碼分析檢查

對於編譯型的語言,如 Java,需要將程式碼編譯成機器可識別的語言才可執行,在編譯過程中,就可以通過分析或檢查源程式的語法、結構、過程、介面等來檢查程式的正確性,找出程式碼隱藏的錯誤和缺陷。這個過程叫做靜態程式碼分析檢查。

那對於 Python 這種解釋型的語言來說,程式碼是邊執行邊翻譯的,不需要經過編譯這個過程。很多肉眼無法一下子看出的錯誤,通常都是跑一下(反正跑一下這麼方便)才能發現。

由於 Python 執行是如此的方便,以至於我們都不太需要關注靜態分析工具。

但也不是說,靜態分析工具完全沒有用武之地,我認為還是有的。

如果你的編碼能力還沒有很成熟,程式碼中可以有許許多多的隱藏bug,由於 Python 是執行到的時候才解釋,導致一次執行只能發現一個錯誤,要發現100個bug,要執行100次,數字有點誇大,其實就是想說,如果這麼多的錯誤都能通過一次靜態檢查發現就立馬修改,開發除錯的效率就可以有所提升。當然啦,並不是說所有的錯誤靜態分析都能提前發現,這點希望你不要誤解。學習過程中有不懂的可以加入我們的學習交流秋秋圈784中間758後面214,與你分享Python企業當下人才需求及怎麼從零基礎學習Python,和學習什麼內容。相關學習視訊資料、開發工具都有分享

做為 Python 最強 IDE,PyCharm本身內建了這個功能,不需要你安裝任何外掛。

你只需要像下面這樣點選專案資料夾,然後右鍵,選擇 Inspect Code,就可以開啟靜態檢查。

我對開源元件 nova 的程式碼做了下靜態檢查發現,其不規範的地方高達數千處。

image

19. 全方位無死角精準定位

一直覺得使用滑鼠是一種非常低效的習慣。

所以我熱衷於使用各種鍵盤快捷鍵來提高操作的精準度,在編輯器上我可以相當熟練的使用 vim 指令完成我各種需求,因此我給 PyCharm 裝上了ideaVim,給 Chrome 裝上了 Vimium。

同樣地閱讀框架程式碼,我也都是使用全鍵盤進行操作。因為我有長期閱讀 OpenStack 原始碼的需求,其程式碼量是數百萬級別的。如果沒有使用精準定位來快速跳轉,這種極差的體驗將很難使我堅持下來。

這裡暫時先介紹幾種我最常用的精準定位方法,主要可以定位跳轉到如下五種:

  • 精準定位到檔案:Windows:Ctrl+Shift+N:,Mac:Command+ shift +N

  • 精準定位到類:Windows:Ctrl+N,Mac:Command+N

  • 精準定位到符號:類的所有成員(函式、變數等)都可以稱之為符號,Windows:Ctrl+Alt+Shift+N,Mac:Option+Shift+Command+N:

  • 精準定位到檔案結構:檔案結構包括類、函式、變數,這說明上面定位到類和定位到符號的方法,你都可以用這個來代替。

    Windows:Ctrl+F12,Mac:Command+F12,如果和我一樣是Mac是帶touchbar的,鍵盤上是沒有F12的,那你應該先按住 Command + fn,這時 touchbar 上會出現 F12,再按F12即可。

  • 精準定位到某行:Windows:Ctrl+G,Mac:Command+G:,如下圖定位到第510行第9個字元處。

20. 利用 TODO 解救“中年痴呆”

一個程式設計師,如果能夠一天都只和程式碼打交道,是一件多麼難得的事情。

可能外行人不知道,做為同樣是程式設計師的你,是不是和我有一樣的煩惱。

程式碼寫著寫著,測試突然就喊道:小明,你的程式碼有bug,ug,g(回聲)。。 程式碼寫著寫著,運維突然一個彈窗:小明,這個線上問題趕緊排查一下。。 程式碼寫著寫著,產品突然就跳出來:小明,能做一個根據手機殼顏色自動改變app主題的app不??

這樣的噩夢每天都在重複不間斷地上演著,或許我知道了為什麼程式設計師要在深夜裡碼程式碼了,因為那是白日裡得不到的寧靜。

所以 王建碩 在<<入靜和入世>>一文中寫道:

“當看到一個程式設計師冥思苦想的時候,不要過去打擾,甚至在極端的情況下,一句友好的問候都是多餘的。 ”

為了避免這個情況,我通常在別人打斷我的時候,請對方給我一分鐘的時間,使用PyCharn 的 TODO 功能快速記錄下當前的思緒狀態,以及下一步要做的事情。

使用方法跟註釋差不多,只要固定要以 TODO 開頭。然後,你要檢視全域性專案中的所有 TODO 事項的時候,可以使用快捷鍵調出 TODO 面板。如果你是 Mac, 快捷鍵 是Command + 6,而 Windows 是 Alt+6。學習過程中有不懂的可以加入我們的學習交流秋秋圈784中間758後面214,與你分享Python企業當下人才需求及怎麼從零基礎學習Python,和學習什麼內容。相關學習視訊資料、開發工具都有分享

另外,我還使用這個來記錄下個版本要優化的程式碼邏輯,要新增的功能。

如果是比較緊急的 BUG,可以使用類似 TODO 的標記 — FIXME來區分緊急程度。

好了,本次的 PyCharm 使用技巧,就是這五個了