前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【方同学】是如何高效的使用IntelliJ IDEA

【方同学】是如何高效的使用IntelliJ IDEA

作者头像
YourBatman
发布2021-08-13 11:26:50
1.1K0
发布2021-08-13 11:26:50
举报
文章被收录于专栏:BAT的乌托邦BAT的乌托邦

✍前言

你好,我是方同学(YourBatman)

其实,很早就想写一篇关于IDEA使用这个主题的文章了,而这次决定“下笔”源自前几天发的这个朋友圈:

本意是感叹周末这两天从0写出这么多代码并理清模型之间的逻辑,确实脑累了。但评论区里是:

  • 4个人说这个主题好看,问我用的哪款主题
  • 6个人说代码真规范

听着我还有点小自豪呢,不枉我平时有花心思在IDEA上!我平时还是蛮注重工具使用的熟练度的,市场保持着使用IDEA的最新版本,关注其新特性。关于IDEA,甚至面试中有时候我都会问或者让求职者现场操作操作(没想到吧,连IDEA都“考”,现在竟然卷得这么厉害?)。我这么做有两个原因:

  1. 源自于我曾抛出的一个观点:工具用得6不一定是高手,但高手一定工具用得6,对于Java开发者而言,IDEA就是这个工具
  2. 我觉得比问算法题价值还高些。算法平时开发中用到的概率几乎为0,而IDEA每时每刻都在用。性价比,似乎高下立判

对方同学熟悉点的小伙伴知道,笔者写了好多篇IntelliJ IDEA系列文章,并且形成专栏。这里陈列3篇(更多IDEA文章可进专栏:BATutopia-IntelliJ IDEA):

不同于市面上清一色的“IDEA常用插件,你用过几个”、“IDEA最新破解方案”这种流水文,还好笔者每一篇都比较有深度比较有营养,当然这篇也不会让你失望。

所属专栏
相关下载
版本约定
  • IntelliJ IDEA 2021.2

✍正文

我如何高效使用IDEA?

鉴于事实,我在文首还是先介绍下自己使用IDEA吧。不过话说在前头,任何时候都是人外有人,天外有天,我写的所有文章、教程、做的所有视频都仅限于我当时所处的认知范畴,绝不代表最好、最深。

由于我个人比较注重工具的使用,所以我对每次自己写出来的代码不管是排版、还是质量、还是写代码的效率都非常自信,这种效率提升IDEA功不可没。还有每次我在公司内分享,很多时候都会一字一句的现场编码实时演示,却一点都不怯场,这很大程度上也来自于我对IDEA的熟练掌握。

可能一不小心点破了一个小现象:很多时候(特别是较小范围分享时)不是主讲人不编码给你看,而是编码容易露馅出自己连“饭碗”都用得不太熟练的尴尬

笔者2015年8月入行的是一家外包公司(关于笔者送外卖->程序员转行经历,有兴趣的可点这里),用的MyEclipse 10,就是它,现在回看是古董了有木有:

离开第一家公司后开始用STS(Spring Tools Suite),当时其他同事都用Eclipse而我用STS,因为对Spring框架的支持度更好:

直到2017年8月份,在新公司第一次接触到IDEA

这里面还有个小插曲:刚开始接触使用IDEA时感觉十分不顺手,所以在长达1个月多月的时间里我都是STS + IDEA双用:

  • 在STS上开发、看代码
  • 在IDEA上拉取代码、提交代码

果不其然,出问题了:我不小心把eclipse工程的相关文件提交到了git仓库,导致组内其他人拉取代码时出现了一系列莫名其妙的问题,浪费了他人时间。我深刻记得当时被领导和一些同事直呼业余!!!当时宝宝心里很苦,心里还在反抗:STS/Eclipse这么好用还免费为啥偏要用IDEA呢?

殊不知,那会IDEA早已全面超过Eclipse,这个历史背景在我这篇文章里有提及:

为此,我痛定思痛完成自己学习后,就逐渐开始了我的IDEA“布道”之路:向个人、团队内、公司内分享这个Java程序员开发利器。IDEA作为一款IDE(集成开发环境),功能不可谓不强大,缺的就是你的探索。

对我自己而言,最能提升我效率的主要有亮点:

  1. 快捷键
  2. 主题

✌快捷键

早些年如果你对在命令行里敲来敲去的同学心生羡慕,那么在工程开发场景下应该会对快捷键使用666的同学赞叹不已。

快捷键我们天天都在用,毕竟这几个键大家都很熟:

对我而言,我觉得快捷键对提升开发效率是立竿见影的,它就是一种捷径。所以在我学IDEA的那会,会用有道云笔记记录下我用的快捷键,有70+个“之多”:

我最常用的大概有近50个,经过几年的反复“练习”,这50个已经形成了肌肉记忆,对我效率提升非常大。

Tips:任何事情不是越多越好。快捷键也是一样,只有常用,快捷键设置得才具意义

✌主题

如下图,这是我正在使用的IDEA主题。

2012年2月,IntelliJ IDEA发布了暗黑主题,瞬间提升了工程师的B格,从此找女朋友好像容易了许多。正所谓外行看热闹,内行看门道,主题绝不能说明一个工程师编程水平的高低,但为何我觉得它是我的提效利器呢?

我当然同意主题不能代表工程师的编程水平,但并不妨碍它帮我提效。这个主题样式其实是从我开始使用MyEclipse就一脉相承过来的,我先说说它对我的帮助:

  1. 我喜欢暗色调,所以暗色调整体看上去我会觉得舒服
  2. 颜色都是我自己定制,所以整体呈现出来是我最喜欢的格调
  3. 每个颜色自己会说话。这是最最最重要的一点,比如以我的主题为例:
    1. 纯黑色:interface接口
    2. 灰黑色:abstract抽象类
    3. 浅灰色:@annotation注解
    4. 绿色:class类
    5. 粉色:成员属性
    6. 红色:定义局部变量
    7. 红色+斜体:使用局部变量
    8. …太多了,不用一一例举

快捷键和主题是对我提效帮助最大的两方面,当然还有很多其它较小的方面的设置。文后我会将我这么做的一些思考和建议分享给你,供你参考,酌情取之

为什么有的大神认为使用记事本写代码很牛逼?

这源自知乎上的一个提问:

其中有几个回答我觉得还蛮有意思:

  • 能跑马拉松的人自然比开车42公里的人牛逼。但是你出门走42公里不开车用跑的那就是SB了…
  • 啊?为什么不是有的 菜鸟 认为用记事本写代码很牛逼? 大神 才没空关心这些呢…
  • 实在没有IDE可用的情况下能用记事本熟练coding,确实nb。放着IDE不用非要用记事本coding显示自己多nb,大神也sb。总会有一些小白对大神们在极端情况下的无奈之举顶礼膜拜,为虚荣心强的大神披上了皇帝的新衣

总之我觉得,如果能在记事本上飞舞的码代码的大神,那么使用IDEA这种工具的话它的效率99.9999%可能性会更高。我记得曾经有个读者跟我私聊,说面试官让他在纸上(或者在电脑上用记事本)写一个控制台输出hello word的程序,要求很简单:能javac直接编译运行。然后,他挂了!

可能有人会觉得问这种面试题没有意义,毕竟没有人会在记事本上写Java。但谁让现在面试就是这么卷呢?作为开发工程师,最终不就是拼这些么,正如郭德纲所说:相声拼到最后拼的是文化

为什么IDEA“不卡”?

IDEA和Eclipse哪个更好,这似乎是一个没有标准答案的提问,但市场会给出解答。在我细目中,那必然是IDEA更好,还是用我有道云笔记上记录的一句话来解释:

(相对)不卡,解决方案一般只有一个:大量使用内存,用空间换时间。所以IDEA吃内存不是盖的(只打开了2个项目):

在现在存储价格越来越低的趋势下,这么做显然是值得的,苹果系产品也是这样为之。看看你的iPhone、iPad、Mac是不是内存长期占用85%以上高居不下。不同于CPU的算力,内存这种资源,不用也就等于浪费。

为此,开发者均愿意为此买单而拥抱IDEA。当然啦,内存大了怎么使用也是很重要,这就是IDEA与Eclipse拉开差距的“核心竞争力”了:索引。

✌无处不在的索引

作为程序员,对索引二字我们并不会陌生。比如最长接触的数据库索引:只有SQL慢,加索引一般能解决90%以上的问题;还有比如Mac的文件搜索系统索引:

索引有两个明显的特点:

  1. 能够大大提高查找的效率
  2. 只需创建一次
  3. 创建时往往比较耗时(数据越多越耗时)

在IDEA里,当打开一个新项目 or 点这个按钮重新启动时:

你一般会经历一个较为“漫长”的建立索引过程,这个过程一般是阻塞式的,你什么都干不了(新版本的IDEA对此有优化,有些步骤可并行):

  • 为当前工程的文件,建立索引
  • 为Spring体系依赖建立索引
  • 为其它依赖建立索引
  • 为JDK建立索引

这个过程可能比较耗时(项目越大、依赖越多就越耗时),并且十分耗CPU资源,所以这个时候你的CPU风扇很可能会高速转起来,就像这样:

正因为IDEA创建了这么多的索引,所以代码提示、懂你的智能提示、代码自动修复等就成为了可能,最终给与你的体感就是IDEA好像不怎么卡!

正确使用IDEA的姿势和思考

下面我仅结合自己的理解,给些比较常用的、IDEA的最佳实践以及我的思考,供以你参考,酌情获取。

✌查找类class

这个功能是常用,同时也是我最想拿出来说的。说实在话,我眼睛看到的几乎一半 同学想要找到某个class类时,用的它:

不知看到这个搜索结果你会是什么感觉?明明只需要找到Application这个类,为毛搞出这么一大片搜索结果呢?看得人眼花缭乱~

这当然不能怪IDEA,是你姿势不对嘛。这个功能叫全文检索,也就是说只要标题/内容包含关键字就匹配,它的能力非常强大,同时也相对来讲更耗性能,更容易造成电脑卡顿。

注意:该搜索只搜索内容,不搜索标题/文件名。好在一般来讲Java中的类

显然用它查找class类并不合适,干扰项特多了。最佳实践应当是它(Navigate -> Class…):

专用于检索查找class类(包括内部类)源文件(也就是.java源文件)。默认情况下找的是当前project,若要查找jar包里面的类(如JDK、Spring里的),仅需点击右上角改变查找位置即可:

新版本的IDEA越发聪明了,好似能做到自动切换,想你所想,大部分情况下都是准的。若需要切换,我还是建议你用快捷键完成快速切换而不是用效率较低的鼠标。

总的来讲,用这个功能来查找class类效率最高,并且最为精准,所以是最佳实践。

✌查找文件file

举个例子:我们经常遇到要找到application.properties/yaml配置文件去写配置,一种方式是一层一层的打开文件夹,另一种当然是更快的方式:查找喽。

这个时候,很多同学依旧拿出自己的“全文检索”:

woho,不灵了!原因其实上面已经提到了:这个搜索只检索内容,而不检索标题。

所以你可以用下面这个方式,它才是最佳实践(Navigate -> File…):

毕竟大部分时候我们都是根据文件名而非文件内容去找文件。

✌Project视窗放在右边

如果说上面两项是我的“强制”建议,那么这个只是我的一个小小建议,请根据个人习惯参考使用。

看到下面这张图,不知你作何感想:本来诺达可视区域,代码区域竟只剩1/5左右了

据我所知这是很多开发同学的常态,特别是在debug断点调试的时候,可视区域可能更小。好不容易买块外置显示器大屏幕…

虽然说这和个人窗口管理的习惯有关(有人爱整洁,有人邋遢嘛),我这里推荐一个把project视窗放在右边(一般左边也只会放project,所以这里我只强调project视窗哈)的解决方案。我的理由如下:

  1. 第一点,也是最重要的一点。它能让最重要代码区域具有稳定性。我们都是从左向右写代码,而每行代码的长度一般是不会太长的,因此大部分情况下代码区域的右边会大量留白,所以理应利用起来
  2. 第二点,视窗都放在右边,能确保代码区域的视觉稳定性。若视窗在左边(如project视窗),我们把它收起or展开,会让代码区域一会左移一会右移,视觉上也更容易累些
  3. 第三点,几乎没有视窗需要一直独占空间区域,所以放在一边管理起来,共享性会更好。从而就可以省出更多空间区域用于显示代码

当把视窗统一放在右边后,代码显示区域得到明显提升(且更稳定),即使是debug也不怕:

当然,当然,当然,一切以你的习惯为准。

✌云化自己的IDEA配置

IDEA从下载下来,到顺手的使用,需要做的步骤其实还是比较多的。比如:

  1. 字体大小
  2. 字体风格
  3. tab风格
  4. 关闭拼写检查
  5. 智能提示是否区分大小写
  6. 单行函数
  7. 自动折叠

这些小配置设置起来不难,花点时间弄弄即可。但是,若:

  • IDEA卸载(干净)重装
  • 换台电脑

对于失去的已经习惯了的配置,是不是想死的心都有了?还好IDEA有配置导出的能力,可以导出一个jar包,新的IDEA导入这个jar即可。但更安全、方便的办法是将配置云化。

起初IDEA还不支持云存储的时候(没记错的话应该是2019年6月之前的版本),我的做法是把这个jar云存储起来,我就是放在有道云笔记里的:

现在好了,IDEA支持云存储了:

它支持两种方式:

  1. 跟着JetBrains账号走
    1. 优点:最方便
    2. 缺点:毕竟是墙外的服务器,速度堪忧
  2. 自定义一个仓库管理
    1. 优点:墙内有码云、CSDN等都可以提供免费仓库
    2. 缺点:需要配置一个仓库地址

很明显,我选择了方式2

✌为自己定制一款主题

IDEA已经内置了多款主题:亮色和暗黑色

本文上部分介绍了主题对我开发效率的提升,希望能给你带来启发。

当然喽,主题和皮肤一样,萝卜白菜,各有所爱,所以各位同学酌情考虑。

考虑到确实有不少同学“喜欢”笔者这个主题,所以我把它公开了,有需要的同学公号后台回复:IDEA主题,即可获得。

✍总结

IDEA作为Java程序员每天都在用的工具,我还是建议可以专门的花点时间造一造,毕竟,磨刀是不误砍柴工的

这篇是比较笼统的介绍了IDEA的一些实践经验,还有很多细一点但非常好用、强大的功能点会在这个IDEA专栏里分享给你,比如代码分析、代码检查、代码自动优化等,最终分享给你《我是如何高效的用IDEA保证团队代码质量的》,感兴趣的敬请关注。

本专栏文章

推荐阅读

代码语言:javascript
复制
System.out.println("写得可还行?收藏再看吧,点个赞吧,分享下吧");
echo("关注【BAT的乌托邦】 https://yourbatman.cn");
console.log("私聊YourBatman:fsx1056342982");

我是YourBatman:一个早在2013年就已毕业的大龄程序员。网瘾失足、清考、延期毕业、房产中介、送外卖、销售…是我不可抹灭的标签。现在是一个纯粹技术工。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-08-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ✍前言
  • ✍正文
    • 我如何高效使用IDEA?
      • ✌快捷键
      • ✌主题
    • 为什么有的大神认为使用记事本写代码很牛逼?
      • 为什么IDEA“不卡”?
        • ✌无处不在的索引
      • 正确使用IDEA的姿势和思考
        • ✌查找类class
        • ✌查找文件file
        • ✌Project视窗放在右边
        • ✌云化自己的IDEA配置
        • ✌为自己定制一款主题
    • ✍总结
      • 本专栏文章
        • 推荐阅读
        相关产品与服务
        对象存储
        对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档