IntelliJ
分类
每年,Jetbrains 都会慷慨地向 Selenium 项目捐赠 IntelliJ 的 OSS 许可证。作为该过程的一部分,他们要求我们审查该产品,并且(值得称赞!)明确表示他们希望我们能够公开和诚实地评价。所以,我会坦诚地表达我的看法。
当我告诉别人我是一名专业的 Java 开发人员时,某些圈子里的人会发出同情的叹息,并且(有时)会开玩笑地说我的编码生活一定很痛苦。毕竟,还有几种更时髦和流行的语言,从 Ruby,各种 JavaScript,Python,Haskell,甚至其他在 JVM 上运行的语言,如 Scala 和 Clojure。我倾向于认为 Java 是一种相对不那么令人兴奋的语言,因为它通常被实践的方式——Java 8 包含了很多好东西,但很多人多年都不会使用,因为他们仍然需要支持 Java 6(!)应用程序。我不同意批评者的观点,即使用 Java 是一件让开发人员感到遗憾的事情:Java 本身并没有什么乐趣,但 Java 和 IntelliJ 是我最喜欢的编程体验之一。
我从(非常)90 年代末就开始使用 Java,并且从 2003 年左右开始断断续续地使用 IntelliJ。在过去的十年多一点的时间里,最初只是一个跨越了“能够进行重构”的工具已经成熟。它确实改变了我编写代码的方式:我现在使用“引入变量”重构来避免需要为变量进行初始赋值。实际上,使用 IntelliJ,我经常停止考虑编程语言,而是开始考虑解决方案的结构。它的重构使探索大规模更改变得容易且完全可靠,并且一旦重构完成,我可以轻松跳转到符号。
代码探索得益于 IntelliJ 查找使用情况的简单快捷的方法,并且很容易找到未使用的代码,因为方法声明会以不同于已使用的方法的阴影突出显示。集成的调试器功能足够强大,再加上单元测试,通常很容易找出为什么会发生一些奇怪的行为。并且,说到单元测试,UI 清晰且(我发现)直观易用。
那些使用花哨的语言(如 Clojure,Ruby,Python 和 Javascript(和 PHP))的用户可以获得扩展 IntelliJ 功能并深入了解这些语言的插件。虽然我已经很久没有处理 Spring 和 JEE 了,但当我需要处理时,IJ 始终能够支持我,理解配置文件。maven 和 gradle 集成似乎也有效,尽管 Selenium 使用 CrazyFun 并正在迁移到 Buck,因此我很少需要使用它们。
但并非一切都美好快乐。在大型多模块代码库上,IntelliJ 似乎花费了太多时间来构建缓存。Mac 上的活动监视器表明它正在以单线程方式执行此操作,这在多核计算机上是一种浪费。离开 IJ,在命令行上执行一些涉及源代码控制的操作,然后切换回来肯定会导致它重建缓存,使其无响应。编写插件扩展 IntelliJ 是一门黑色艺术——文档分散且似乎已过时,使得开始编写插件非常困难。
总的来说,我喜欢 IntelliJ。在 Selenium 项目中,它是首选的 IDE,并且我在其中获得了非常高的效率。感谢 Jetbrains,提供如此出色的工具。