[docs improve]IDEA相关图片压缩
@ -6,11 +6,11 @@ tag:
|
||||
- IDEA插件
|
||||
---
|
||||
|
||||
非常有用!这个插件可以实现包含6种常见命名格式之间的切换。并且,你还可以对转换格式进行相关配置(转换格式),如下图所示:
|
||||
非常有用!这个插件可以实现包含6种常见命名格式之间的切换。并且,你还可以对转换格式进行相关配置(转换格式) *Preferences / Settings | Camel Case* 。
|
||||
|
||||

|
||||

|
||||
|
||||
有了这个插件之后,你只需要使用快捷键 `shift+option+u(mac)` / `shift+alt+u` 对准你要修改的变量或者方法名字,就能实现在多种格式之间切换了,如下图所示:
|
||||
有了这个插件之后,点击你想要修改的变量或者方法名使用快捷键 `shift+option+u(mac)` / `shift+alt+u` 即可实现在多种命名格式之间切换。
|
||||
|
||||

|
||||
|
||||
@ -24,4 +24,3 @@ tag:
|
||||
|
||||
如果我们不用这个插件,而是手动去一个一个改的话,工作量想必会很大,而且正确率也会因为手工的原因降低。
|
||||
|
||||
>
|
||||
|
@ -10,13 +10,15 @@ GsonFormat 这个插件可以根据Gson库使用的要求,将JSONObject格式的
|
||||
|
||||
> 说明:2021.x 版本以上的 IDEA 可以使用:GsonFormatPlus
|
||||
|
||||
这个插件使用起来非常简单,我们新建一个类,然后在类中使用快捷键 `option + s`(Mac)或`alt + s` (win)调出操作窗口(**必须在类中使用快捷键才有效**),如下图所示。
|
||||
使用起来非常简单,我们新建一个类,然后在类中使用快捷键 `option + s`(Mac)或`alt + s` (win)调出操作窗口(**必须在类中使用快捷键才有效**),如下图所示。
|
||||
|
||||

|
||||

|
||||
|
||||

|
||||
|
||||
这个插件是一个国人几年前写的,不过已经很久没有更新了,可能会因为IDEA的版本问题有一些小Bug。而且,这个插件无法将JSON转换为Kotlin(这个其实无关痛痒,IDEA自带的就有Java转Kotlin的功能)。
|
||||
|
||||

|
||||

|
||||
|
||||
另外一个与之相似的插件是 **:RoboPOJOGenerator** ,这个插件的更新频率比较快。
|
||||
|
||||
|
@ -19,16 +19,21 @@ tag:
|
||||
</dependency>
|
||||
```
|
||||
|
||||
使用 Lombok 能够帮助我们少写很多代码比如 Getter/Setter、Constructor等等。
|
||||
|
||||
关于Lombok的使用,可以查看这篇文章:[《十分钟搞懂Java效率工具Lombok使用与原理》](https://mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==&mid=2247485385&idx=2&sn=a7c3fb4485ffd8c019e5541e9b1580cd&chksm=cea24802f9d5c1144eee0da52cfc0cc5e8ee3590990de3bb642df4d4b2a8cd07f12dd54947b9&token=1667678311&lang=zh_CN#rd)。
|
||||
使用 Lombok 能够帮助我们少写很多代码比如 Getter/Setter、Constructor 等等。
|
||||
|
||||
关于 Lombok 的使用,可以查看这篇文章:[《十分钟搞懂 Java 效率工具 Lombok 使用与原理》](https://mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==&mid=2247485385&idx=2&sn=a7c3fb4485ffd8c019e5541e9b1580cd&chksm=cea24802f9d5c1144eee0da52cfc0cc5e8ee3590990de3bb642df4d4b2a8cd07f12dd54947b9&token=1667678311&lang=zh_CN#rd)。
|
||||
|
||||
## Codota:代码智能提示
|
||||
|
||||
我一直在用的一个插件,可以说非常好用了(*我身边的很多大佬平时写代码也会用这个插件*)。
|
||||
> 目前的话,Codota 已经更名为 **Tabnine** 。
|
||||
|
||||
Codota 这个插件用于智能代码补全,它基于数百万Java程序,能够根据程序上下文提示补全代码。相比于IDEA自带的智能提示来说,Codota 的提示更加全面一些。
|
||||
我一直在用的一个插件,可以说非常好用了(_我身边的很多大佬平时写代码也会用这个插件_)。
|
||||
|
||||
Codota 这个插件用于智能代码补全,它基于数百万 Java 程序,能够根据程序上下文提示补全代码。相比于 IDEA 自带的智能提示来说,Codota 的提示更加全面一些。
|
||||
|
||||
除了代码补全之外,Codota 还支持代码智能搜索,直接选中对应的类或者方法即可搜索相关的代码示例。
|
||||
|
||||

|
||||
|
||||
如果你觉得 IDEA 插件安装的太多比较卡顿的话,不用担心!Codota 插件还有一个对应的在线网站([https://www.codota.com/code](https://www.codota.com/code)),在这个网站上你可以根据代码关键字搜索相关代码示例,非常不错!
|
||||
|
||||
@ -38,29 +43,11 @@ Codota 这个插件用于智能代码补全,它基于数百万Java程序,能
|
||||
|
||||
另外,Codota 插件的基础功能都是免费的。你的代码也不会被泄露,这点你不用担心。
|
||||
|
||||
简单来看看 Codota 插件的骚操作吧!
|
||||
|
||||
### 代码智能补全
|
||||
|
||||
我们使用`HttpUrlConnection ` 建立一个网络连接是真的样的:
|
||||
|
||||

|
||||
|
||||
我们创建线程池现在变成下面这样:
|
||||
|
||||

|
||||
|
||||
上面只是为了演示这个插件的强大,实际上创建线程池不推荐使用这种方式, 推荐使用 `ThreadPoolExecutor` 构造函数创建线程池。我下面要介绍的一个阿里巴巴的插件-**Alibaba Java Code Guidelines** 就检测出来了这个问题,所以,`Executors`下面用波浪线标记了出来。
|
||||
|
||||
### 代码智能搜索
|
||||
|
||||
除了,在写代码的时候智能提示之外。你还可以直接选中代码然后搜索相关代码示例。
|
||||
|
||||

|
||||
类似的插件还有阿里云智能编码插件 **Cosy**(Alibaba Cloud AI Coding Assistant) ,关于 Cosy 的详细介绍,可以看一下我写的 [阿里云 Java 智能编码插件 Cosy 诞生!](https://zhuanlan.zhihu.com/p/464874603)这篇文章。
|
||||
|
||||
## Alibaba Java Code Guidelines:阿里巴巴 Java 代码规范
|
||||
|
||||
阿里巴巴 Java 代码规范,对应的Github地址为:[https://github.com/alibaba/p3c](https://github.com/alibaba/p3c ) 。非常推荐安装!
|
||||
阿里巴巴 Java 代码规范,对应的 Github 地址为:[https://github.com/alibaba/p3c](https://github.com/alibaba/p3c) 。非常推荐安装!
|
||||
|
||||
安装完成之后建议将与语言替换成中文,提示更加友好一点。
|
||||
|
||||
@ -68,13 +55,13 @@ Codota 这个插件用于智能代码补全,它基于数百万Java程序,能
|
||||
|
||||
根据官方描述:
|
||||
|
||||
> 目前这个插件实现了开发手册中的的53条规则,大部分基于PMD实现,其中有4条规则基于IDEA实现,并且基于IDEA [Inspection](https://www.jetbrains.com/help/idea/code-inspection.html)实现了实时检测功能。部分规则实现了Quick Fix功能,对于可以提供Quick Fix但没有提供的,我们会尽快实现,也欢迎有兴趣的同学加入进来一起努力。 目前插件检测有两种模式:实时检测、手动触发。
|
||||
> 目前这个插件实现了开发手册中的的 53 条规则,大部分基于 PMD 实现,其中有 4 条规则基于 IDEA 实现,并且基于 IDEA [Inspection](https://www.jetbrains.com/help/idea/code-inspection.html)实现了实时检测功能。部分规则实现了 Quick Fix 功能,对于可以提供 Quick Fix 但没有提供的,我们会尽快实现,也欢迎有兴趣的同学加入进来一起努力。 目前插件检测有两种模式:实时检测、手动触发。
|
||||
|
||||
上述提到的开发手册也就是在Java开发领域赫赫有名的《阿里巴巴Java开发手册》。
|
||||
上述提到的开发手册也就是在 Java 开发领域赫赫有名的《阿里巴巴 Java 开发手册》。
|
||||
|
||||
### 手动配置检测规则
|
||||
|
||||
你还可以手动配置相关 inspection规则:
|
||||
你还可以手动配置相关 inspection 规则:
|
||||
|
||||

|
||||
|
||||
@ -84,13 +71,13 @@ Codota 这个插件用于智能代码补全,它基于数百万Java程序,能
|
||||
|
||||

|
||||
|
||||
这个可以对应上 《阿里巴巴Java开发手册》 这本书关于创建线程池的方式说明。
|
||||
这个可以对应上 《阿里巴巴 Java 开发手册》 这本书关于创建线程池的方式说明。
|
||||
|
||||

|
||||
|
||||
## CheckStyle: Java代码格式规范
|
||||
## CheckStyle: Java 代码格式规范
|
||||
|
||||
### 为何需要CheckStyle插件?
|
||||
### 为何需要 CheckStyle 插件?
|
||||
|
||||
**CheckStyle 几乎是 Java 项目开发必备的一个插件了,它会帮助我们检查 Java 代码的格式是否有问题比如变量命名格式是否有问题、某一行代码的长度是否过长等等。**
|
||||
|
||||
@ -98,27 +85,27 @@ Codota 这个插件用于智能代码补全,它基于数百万Java程序,能
|
||||
|
||||
如果你看过我写的轮子的话,可以发现我为每一个项目都集成了 CheckStyle,并且设置了 **Git Commit 钩子**,保证在提交代码之前代码格式没有问题。
|
||||
|
||||
> **Guide哥造的轮子**(*代码简洁,结构清晰,欢迎学习,欢迎一起完善*):
|
||||
> **Guide 哥造的轮子**(_代码简洁,结构清晰,欢迎学习,欢迎一起完善_):
|
||||
>
|
||||
> 1. [guide-rpc-framework](https://github.com/Snailclimb/guide-rpc-framework) :A custom RPC framework implemented by Netty+Kyro+Zookeeper.(一款基于 Netty+Kyro+Zookeeper 实现的自定义 RPC 框架-附详细实现过程和相关教程)
|
||||
> 2. [jsoncat](https://github.com/Snailclimb/jsoncat) :仿 Spring Boot 但不同于 Spring Boot 的一个轻量级的 HTTP 框架
|
||||
>
|
||||
> **Git 钩子**: Git 能在特定的重要动作比如commit、push发生时触发自定义脚本。 钩子都被存储在 Git 目录下的 `hooks` 子目录中。 也即绝大部分项目中的 `.git/hooks` 。
|
||||
> **Git 钩子**: Git 能在特定的重要动作比如 commit、push 发生时触发自定义脚本。 钩子都被存储在 Git 目录下的 `hooks` 子目录中。 也即绝大部分项目中的 `.git/hooks` 。
|
||||
|
||||
### 如何在Maven/Gradle项目中集成 Checksytle?
|
||||
### 如何在 Maven/Gradle 项目中集成 Checksytle?
|
||||
|
||||
一般情况下,我们都是将其集成在项目中,并设置相应的 Git 钩子。网上有相应的介绍文章,这里就不多提了。
|
||||
|
||||
如果你觉得网上的文章不直观的话,可以参考我上面提到了两个轮子:
|
||||
|
||||
1. [guide-rpc-framework](https://github.com/Snailclimb/guide-rpc-framework) :Maven项目集成 Checksytle。
|
||||
2. [jsoncat](https://github.com/Snailclimb/jsoncat) :Gradle项目集成 Checksytle。
|
||||
1. [guide-rpc-framework](https://github.com/Snailclimb/guide-rpc-framework) :Maven 项目集成 Checksytle。
|
||||
2. [jsoncat](https://github.com/Snailclimb/jsoncat) :Gradle 项目集成 Checksytle。
|
||||
|
||||
如果你在项目中集成了 Checksytle 的话,每次检测会生成一个 HTML格式的文件告诉你哪里的代码格式不对,这样看着非常不直观。通过 Checksytle插件的话可以非常直观的将项目中存在格式问题的地方显示出来。
|
||||
如果你在项目中集成了 Checksytle 的话,每次检测会生成一个 HTML 格式的文件告诉你哪里的代码格式不对,这样看着非常不直观。通过 Checksytle 插件的话可以非常直观的将项目中存在格式问题的地方显示出来。
|
||||
|
||||

|
||||
|
||||
如果你只是自己在本地使用,并不想在项目中集成 Checksytle 的话也可以,只需要下载一个 Checksytle插件就足够了。
|
||||
如果你只是自己在本地使用,并不想在项目中集成 Checksytle 的话也可以,只需要下载一个 Checksytle 插件就足够了。
|
||||
|
||||
### 如何安装?
|
||||
|
||||
|
@ -9,7 +9,7 @@ tag:
|
||||
|
||||
由于后面要分享的一篇文章中用到了这篇文章要推荐的一个插件,所以这里分享一下。非常实用!你会爱上它的!
|
||||
|
||||

|
||||

|
||||
|
||||
**开始推荐 IDEA 字节码查看神器之前,先来回顾一下 Java 字节码是啥。**
|
||||
|
||||
@ -55,11 +55,11 @@ public class Main {
|
||||
|
||||
> 需要注意的是:**查看某个类对应的字节码文件之前确保它已经被编译过。**
|
||||
|
||||

|
||||

|
||||
|
||||
稍等几秒钟之后,你就可以直观到看到对应的类的字节码内容了。
|
||||
|
||||

|
||||

|
||||
|
||||
从字节码中可以看出,我圈出来的位置发生了 **拆箱操作** 。
|
||||
|
||||
@ -82,12 +82,12 @@ System.out.println(flag ? 0 : i);
|
||||
|
||||
**使用 `jclasslib` 不光可以直观地查看某个类对应的字节码文件,还可以查看类的基本信息、常量池、接口、属性、函数等信息。**
|
||||
|
||||

|
||||

|
||||
|
||||
我们直接在 IDEA 的插件市场即可找到这个插件。我这里已经安装好了。
|
||||
|
||||

|
||||

|
||||
|
||||
安装完成之后,重启 IDEA。点击`View -> Show Bytecode With jclasslib` 即可通过`jclasslib` 查看某个类对应的字节码文件。
|
||||
|
||||

|
||||

|
Before Width: | Height: | Size: 1.9 MiB |
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 174 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 611 KiB |
Before Width: | Height: | Size: 108 KiB |
Before Width: | Height: | Size: 998 KiB |
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 1.3 MiB |
Before Width: | Height: | Size: 711 KiB |
After Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 224 KiB After Width: | Height: | Size: 102 KiB |
Before Width: | Height: | Size: 180 KiB After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 577 KiB After Width: | Height: | Size: 264 KiB |
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 157 KiB After Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 148 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 390 KiB After Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 103 KiB After Width: | Height: | Size: 86 KiB |
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 67 KiB |
Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 83 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 41 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 46 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 205 KiB After Width: | Height: | Size: 77 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 234 KiB After Width: | Height: | Size: 193 KiB |
Before Width: | Height: | Size: 137 KiB After Width: | Height: | Size: 134 KiB |
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 106 KiB |
Before Width: | Height: | Size: 748 KiB After Width: | Height: | Size: 546 KiB |
Before Width: | Height: | Size: 156 KiB After Width: | Height: | Size: 122 KiB |
@ -47,7 +47,7 @@ tag:
|
||||
|
||||
举个例子。我使用快捷键 `command+9`打开 Version Control ,使用了这个插件之后的效果如下图所示。
|
||||
|
||||

|
||||

|
||||
|
||||
从上图可以很清晰地看到,IDEA 的底部中间的位置将我刚刚所使用的快捷键给展示了出来。
|
||||
|
||||
|
@ -5,83 +5,13 @@ category: IDEA指南
|
||||
|
||||
# IntelliJ IDEA 使用指南 | 必备插件推荐 | 插件开发入门 | 重构小技巧 | 源码阅读技巧
|
||||
|
||||

|
||||
|
||||
在这里,我会分享一下自己使用 IDEA 的一些经验,希望对大家有帮助(欢迎 star)!
|
||||
**项目地址** :
|
||||
|
||||
- Github 地址:[https://github.com/CodingDocs/awesome-idea-tutorial](https://github.com/CodingDocs/awesome-idea-tutorial)
|
||||
- 码云地址:[https://gitee.com/SnailClimb/awesome-idea-tutorial](https://gitee.com/SnailClimb/awesome-idea-tutorial ) (Github 无法访问或者访问速度比较慢的小伙伴可以看码云上的对应内容)
|
||||
- Gitee 地址:[https://gitee.com/SnailClimb/awesome-idea-tutorial](https://gitee.com/SnailClimb/awesome-idea-tutorial ) (Github 无法访问或者访问速度比较慢的小伙伴可以看码云上的对应内容)
|
||||
|
||||
大学的时候,我一直在用 Eclipse ,说实话用习惯了,占内存也比较小,最主要的是还免费使用。我当时一直没有换 IntelliJ IDEA(后面会简称为 IDEA) 的很大一部分原因是切换到 IDEA 需要很长时间去适应,有点跳出舒适区的感觉。
|
||||
**常见问题** :
|
||||
|
||||
不过,说实话,我现在用 IDEA 这么久了,还是感觉很香的!俗话说:**工欲善其事,必先利其器 ,就我个人而言 IDEA 是最适合 Java 开发者的 IDE 。** 如果你没有用过的 IDEA 就随便评判两者的话,我建议你不妨挑出自己的舒适区,尝试着去使用一段时间。**如果你觉得 Eclipse 更适合你的话,我觉得也没忙病,萝卜白菜各有所爱,我们也要尊重别人的想法 💡。**
|
||||
- [选择IDEA还是Eclipse? - JavaGuide的回答 - 知乎](https://www.zhihu.com/question/305591091/answer/2259316801)
|
||||
- [IntelliJ IDEA 中有什么让你相见恨晚的技巧? - JavaGuide的回答 - 知乎](https://www.zhihu.com/question/300830746/answer/2255262082)
|
||||
|
||||
IDEA 是 JetBrains 在 2001 年发布的,主要用来支持 Java 编程,不过也支持 Kotlin(由 JetBrains 开发),Groovy,Clojure,Scala 等编程语言。
|
||||
|
||||
JetBrains 真的是很厉害的一家公司,这家公司推出的很多 IDE 基本都是工程师编程首选比如 PyCharm、WebStorm 等等。这家公司做出来的东西为什么好?我觉得主要就一个词总结:**智能** ( IntelliJ->intelligent)
|
||||
|
||||

|
||||
|
||||
下面 Guide 会简单对比一下它们,方便大家更好地去了解这个 IDE。
|
||||
|
||||
### 易用程度
|
||||
|
||||
#### IDEA 提供了更多人性化的功能
|
||||
|
||||
个人感觉 IDEA 更加易用,因为 IDEA 内置了太多人性的话的功能比如对 Git 功能的支持、代码检查等等。
|
||||
|
||||
如下图示,这个是 IDEA 自带的版本控制功能,非常好用,清晰地展示了提交记录,便于查阅别人的提交以及项目组进行 Code Review。
|
||||
|
||||

|
||||
|
||||
#### IDEA 智能上下文提示
|
||||
|
||||
另外,**IDEA 比 Eclipse 更好的一点是它的智能代码提示,这个确实好用,而且还是根据你当前上下文来提示提示的(基于快速索引技术)。**
|
||||
|
||||

|
||||
|
||||
#### 使用 IDEA 更加智能的进行重构
|
||||
|
||||
IDEA 对重构的支持更加友好以及安全,你可以更加方便地去进行重构比如使用快捷键提取方法、抽取变量等等。
|
||||
|
||||
下图对应地地址在这里:[https://www.jetbrains.com/help/idea/refactoring-source-code.html](https://www.jetbrains.com/help/idea/refactoring-source-code.html) 。
|
||||
|
||||

|
||||
|
||||
### 是否免费
|
||||
|
||||
IDEA 社区版和 Eclipse IDE 均可免费下载和使用,不过 IDEA 还提供了一个功能更多地称为 Ultimate Edition(最终版本)的版本,不过作为 Java 初学者来说 IntelliJ IDEA 社区版就完全够用了。
|
||||
|
||||
IDEA 的付费商业版本和免费版本的主要区别如下图所示,可以看出商业版的 IDEA 提供了更多功能的支持比如帮你找到你的项目中找到重复的代码块、提供数据库管理工具等等。
|
||||
|
||||

|
||||
|
||||
### 系统占用和内存管理
|
||||
|
||||
不得不承认, IDEA 的系统占用更大,平稳运行至少需要 4g 以上的闲置内存。而 Eclipse 只需要 1g 的内存就组足够平稳运行了(项目过大的情况可能需要更多地运行内存支持)。
|
||||
|
||||
另外,内存管理方面的话,Eclipse 做的也更好,之前我的电脑是 8 g 内存,不过,它足以流畅运行 Eclipse 。我现在的电脑是 16 g 内存,某些时候运行 IDEA 甚至会比较卡顿。
|
||||
|
||||
**如果你的电脑真的没办法支持 IDEA 运行的话,我的建议是:“你要换电脑了”。**
|
||||
|
||||
### 插件
|
||||
|
||||
相比于 Eclipse 来说,IDEA 里面有太多太多宝藏插件了,真的非常棒 👍!
|
||||
|
||||
> 最近我也在整理一些使用 IDEA 开发必备的插件,可能只需要 30s 就能收走你们的再看。下一篇文章我就会分享到,大家期待一波吧!
|
||||
|
||||
很多插件都会优先支持 IDEA,毕竟 IDEA 的使用占比率还是比较大的。
|
||||
|
||||

|
||||
|
||||
### 受欢迎程度
|
||||
|
||||
就现在来看,IDEA 的使用占比和受欢迎程度比 Eclipse 更高,并且大有远超之势。
|
||||
|
||||
下图是国外的一个网站的一个统计报告!
|
||||
|
||||

|
||||
|
||||
最后再分享一下国外一个网站关于 “ Java 编程最好的 IDE 是哪一个?”的数据,可以看出 IDEA 还是略胜一筹的。
|
||||
|
||||

|
||||
|