根據我作為開發者的經驗,許多 C/C++ 開發者都認為 IDE 並不能提高他們的生產力。因為有什麼能比簡單快速的 Vim 或 Emacs 更強大呢?好吧,讓我來向你展示。這 10 個 CLion 小技巧可以讓你達到新的生產力水平,讓你專注於重要且複雜的任務,而 IDE 則為你處理日常工作。
在我們開始之前,請允許我向你介紹
CLion,一個由 JetBrains 建立的用於 C 和 C++ 開發的新的跨平臺 IDE。它原生支援 C 和 C++,包括 C++11 標準(有一些小限制)、libc++ 和 Boost。它能正確處理宏和模板,並可與 GCC 或 Clang(在 Windows 上你需要 MinGW/MinGW-w64 或 Cygwin)、作為內建偵錯程式的 GDB 以及作為構建系統和專案模型的 CMake 一起工作。除了 C/C++,你還可以使用 JavaScript、XML、HTML 和 CSS,它們都擁有相同級別的程式碼編輯和轉換功能,如語法高亮、分析、補全、導航和重構。
1. 智慧補全知道你需要什麼
首先,我們都需要一個編輯器。程式碼補全至關重要:我們只需輸入一個符號(變數、函式、型別、類名),編輯器就會顯示一個匹配的建議列表。這很簡單,但我們在下面的示例中真的需要所有這些選項嗎?
在很多情況下,我們在這裡只需要型別為
idPlayer *
的東西。而這正是 CLion 的智慧補全所做的!它會根據程式碼上下文智慧地過濾建議。
哦,如果只找到一個可能的選項,它會立即為你補全!
2. 先使用,後定義
當我們在腦海中有了一個絕妙的想法時,我們不想花時間去做一些常規和瑣碎的事情。假設你使用了一個尚未實現甚至尚未宣告的函式。CLion 會將它標紅。你應該在這裡停下來實現這個函式嗎?一點也不!讓 CLion 生成一個存根,以後再回來處理。只需按下 Alt+Enter。
宣告和定義會立即出現在你的程式碼中。
這同樣適用於變數和類名。
3. 為你喜歡的或最常用的程式碼片段使用 Live Templates
如何只輸入幾個字元就能得到一個迴圈或遍歷一個範圍(C++11 風格)?輸入
for
然後按 Tab 鍵即可獲得一個迴圈;或者輸入
iter
或
itit
然後按 Tab 鍵。
更進一步,CLion 允許你建立自定義的 Live Templates 或“Surround With”模板(它們可以快速用一個結構包圍選定的程式碼)。例如,這是一個快速獲取繼承自另一個現有類的類的快捷方式。
添加了一個新的“cp”模板後,我可以在編輯器中輸入
cp
。
模板描述會顯示在補全下拉列表中。透過按 Tab 鍵,我的模板就被展開了。現在我可以提供一個新的類名,然後從補全列表中選擇一個父類和它的修飾符。
Voilà!我們得到了一個新類。
當然,你可以生成更復雜的模板,可能包括一個
$SELECTION$
變數以獲得“Surround With”模板。
4. 遵循層級檢視
我看到開發者閱讀程式碼的頻率遠高於編寫程式碼。在我們新增新程式碼或更新現有內容之前,我們通常會深入細緻地調查我們現有的程式碼庫。(除非你從頭開始一個專案,但這並不經常發生。)所以,很多時候,提高生產力就等於儘可能快地在程式碼庫中找到我的路徑。
為此,CLion 為你提供了廣泛的程式碼導航選項:
- 使用標準的轉到宣告/定義功能;
- 跳轉到相關的符號、最近的檔案或你最後編輯的地方;
- 按名稱搜尋任何類、檔案或符號;
- 使用“查詢用法”進行上下文搜尋;
- 使用檔案結構檢視在當前檔案中導航;
- 並利用幾種層級檢視,包括呼叫層級、型別層級和匯入層級。
呼叫層級是我的最愛。它能讓我詳細地看到整個呼叫堆疊及其所有分支。看起來很簡單,不是嗎?只需單擊一下即可導航到編輯器中的相應位置,或使用“自動滾動到源”使其更快。
5. 重新排序或新增引數——IDE 會處理所有用法
重構是一項強大的技術,可以幫助我們使程式碼更清晰、質量更高、更易於維護。一些 IDE 透過提供一些自動化的程式碼重構來協助你進行此操作。CLion 有很多,從最受歡迎的“重新命名”到更復雜的“更改簽名”、“提取函式”或“提取類”、“內聯”等等。當應用重構更改時,你始終可以依靠 CLion 來保持程式碼的正確性。
讓我來具體說明它是如何可靠的。假設我們有這個函式及其用法。
要為這個函式新增一個額外的引數,我將使用“更改簽名”重構。
順便說一句,感謝程式碼補全,在這個對話方塊中輸入新引數型別非常容易。在我點選“重構”後,CLion 會更新簽名和所有用法,用給定的型別(在本例中為
nullptr
)替換預設值。
如果我在進行“更改簽名”時決定重新排序引數呢?當然,它們的順序也會在所有用法中相應更新。
6. 提取一切,選擇豐富
將一段程式碼提取到一個單獨的函式是非常流行的重構,但像提取型別定義、定義、變數、引數甚至子類呢?當你使用 CLion 中的這些重構時,許多微小但有用的細節可以改善你的體驗。例如,在提取常量或變數時,你可以更改所有出現的地方(如果存在多個);可以將常量或引數宣告為靜態;提取變數時使用 auto 型別;等等。
7. 未使用的程式碼?條件中的 '='?都不是問題!
根據計算機的墨菲定律,每個非平凡的程式至少有一個 bug。但我們盡力修復我們所能修復的。為了定位和修復 bug,CLion 會持續監控你的程式碼是否存在潛在錯誤。任何可疑的程式碼片段都會在編輯器中高亮顯示,並會為你提供可能的快速修復選項來解決問題。要檢視它們,只需按下 Alt+Enter。IDE 還執行完整的資料流分析,為你檢測未使用的或無法訪問的程式碼。
無處不在的 C/C++ 特有錯誤,例如條件中的“=”,也逃不過 CLion 的眼睛。
所有這些輔助功能都會在你輸入時工作,為你節省了執行其他程式碼分析工具的精力。
8. 輕鬆除錯,變數值直接在編輯器中顯示!
IDE 相對於純文字編輯器的關鍵優勢在於除錯體驗。雖然你總是可以單獨執行一個獨立的偵錯程式,但在 IDE 中除錯可以為你節省時間並提供各種額外的功能。
CLion 集成了 GDB 後端,在其 UI 中提供了所有必需品,並透過一些非常有用的功能擴充套件了你的除錯體驗。例如,每次你輸入一個要監視的變數名或要計算的表示式時,都可以利用程式碼補全。一個專用的工具視窗顯示你程式當前狀態的所有詳細資訊。而最重要的來了:當你除錯時,IDE 會在你宣告的變數旁邊直接顯示變數的值!
9. 除錯時改變主意了?無需重啟——即時調整變數值!
除錯是為了理解程式中的資料和控制流。有時你需要檢查多個變數值,例如為了遵循不同的執行分支。不要浪費寶貴的時間重新開始——在同一個除錯會話中即時調整變數值!
我們現在可以繼續同一個會話,但變數
y
的新值是 55。正如我們之前注意到的,IDE 在編輯器中將變數值顯示在其宣告旁邊,並高亮顯示已應用的更改。
10. 所有需要的工具都在裡面——無需切換!
IDE 代表 **整合開發環境**,使用 IDE 意味著你不再需要在工作時切換多個工具,例如獨立的 VCS 應用程式、瀏覽器中的問題跟蹤器,甚至是終端。所有這些功能都整合在 CLion IDE 中,因此你可以專注於編碼,儘量減少干擾。
在 CLion 中嘗試這些技巧,看看它們是否能幫助你變得更高效、更有生產力!