根据我作为开发者的经验,许多 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 中尝试这些技巧,看看它们是否能帮助你变得更高效、更有生产力!