面向IntelliJ IDEA编程

3,211 阅读4分钟

这是我的第一篇掘金博客,开启掘金写作之路。这篇文章来自Web能力中心团队的铁甲小宝,介绍了他在使用IDEA过程中的一些技巧

当我们谈IDEA时,除了插件,还会谈到什么

说到IntelliJ IDEA(以下简称IDEA)时,我们经常谈到很多或者提效,或者好看的插件,那么除了使用各类插件,使用IDEA还有什么值得大家注意的技巧?接下来我会介绍几个我觉得有用的技巧,或者说是编码习惯。

“面向对象”编程

怎么,难道面向对象编程也要说下吗?当然不是,不过我发现在使用IDEA的过程中,写代码经常可以先写对象,再想对它的操作,进而调用相应的方法,举个最简单的例子,在编写Java代码中,调用一个方法后获得了个字符串,类似这样: result.png 要接着往下写的,你突然想打印下这个变量看看内容是否正确,你无需先删除这个变量,再重写System.out.println(result) 因为你可以“面向对象”,直接把输出这个变量看成调用这个变量的sout方法即可,类似这样 B093C6EF-6C94-4430-A179-8583D3F71C14.png 点击回车后,就会看到 2D8F49DB-4C13-4B42-A922-B75404EE2C62.png 同样的道理,如果是前端代码,你想输出某个对象xxx时,可以写

xxx.log

点击回车后就会变成

console.log(xxx)

还有一些类似的写法,比如:

  • 一个对象需要被返回,可以写xxx.return;
  • 一个数组的需要被正向遍历,可以写arr.length.fori这里的fori表示正向循环(increase),如果要反向循环可以写arr.length.forr ;
  • 一个对象要判断它非空,可以写xxx.nn
  • 一个对象要用某个变量来表示,可以写如new Person().var 那么,这样写代码,除了简单还有什么好处呢?

“知果索因”,先写等号右边的内容

new Person().var这种写法为例: DBFCE24A-0008-4257-BAE5-35464D3D4964.png 点击回车后,生成这样的代码: C8C6300B-EAA3-4F88-917B-995CB5F6608C.png 这就提醒我们,我们写代码可以只关注等号右边的内容,而左边的内容通过类似调用.var去生成,或者通过使用智能提示Alt+Enter显示的Introduce local variable去生成对当前方法/类的变量设置,如下图 509D24F4-714D-42A2-9555-C03D67F1E97F.png 这样的写法IDEA也可以帮你准确的推断出这里应该的变量类型。甚至我们可以用这种方式推动对变量的重命名操作,比如下面这段代码: 039DFCED-DE8F-4FD0-8C08-35BD48CAB4AD.png 大家可以把nums.length看成调用一个可能比较复杂的方法,当你第二次甚至更多次写这个方法调用时,可以考虑用一个变量来表示它,进而就不用每次都调这个方法去获取返回值了,这里的抽取有很多方法,我只说一种,这样写: 先写nums.length.var,点回车,IDEA会帮你发现之前这些写的所有地方,于是你可以对多有使用处做替换,如下图

3009FA1A-F46F-472C-A64E-F10A3723B7BA.png

FD4CFD0C-747F-47CE-B34A-5FF6EDA15CB2.png

22659FC7-AAD6-460C-B7E5-49E4F3448ECE.png

更广泛的“知果索因”

IDEA是JetBrains家的完整体IDE,也包含了WebStorm、PHPStorm、DataGrip等的动能,或者说,他们都是部分版本的IDEA,因此我们不止可以用IDEA进行Java开发,包括其他语言如前端开发使用IDEA也是可以的。以编写Angular代码和Java-SpringBoot代码为例,介绍下如何通过IDEA更广泛的“知果索因”。 Angular中,一个组件经常包含四个文件(html,css,ts,测试的ts),比如当前需要在html中的某个button标签中绑定onclick方法handleClick(),我们的习惯往往是先在ts文件中编写该方法,继而在html中调用。而使用IDEA的过程中则可以“知果索因”,需要一个方法,就先把这个方法名写出来,当然,没有这个方法,会报错,接着就用Alt+Enter智能提示,提示在相应的文件下创建这个方法,这样做的好处是,假如这个方法是有参数类型或者返回值要求的,IDEA可以帮助用户直接推断出来,另外这个方法的修饰符是public/private,也可以在此推断出来

1E2330AC-7793-4D93-B9FC-9D43F9A95F16.png

9E922A63-2750-432C-BE8A-AAD1D62C6C00.png 当然, 如果你常写Java的SpringBoot代码,会更多的需要在Controller中调用Service的方法,Service中实现ServiceImpl,ServiceImpl中可能还需要调用其他Dao层,我们可以在使用过程中一直通过先写方法,再自动在指定的类中创建的方式写代码,甚至这样生成对象,都是十分方便的。

总结

这篇文章中介绍了一些我习惯使用IDEA编码方法。当然,大家都有各自不同的习惯,而自己熟悉了的写法就是对自己最好的。上述介绍的是我熟悉的方法,如果大家觉得这样写代码也有点意思,不妨一试。