使用 IntelliJ 进行黑客攻击

Jetbrains 为开源项目提供了一个计划,允许他们获得 IntelliJ IDEA 许可证。

Jetbrains开源项目 提供了一个IntelliJ IDEA 许可证计划。作为该计划的一部分,Selenium 项目多年来一直参与其中,他们要求我们提供对 IntelliJ 的公平和平衡的评价。我将尝试做到这一点,并且我将提前说明我的偏见,以便您了解它们。

自从我大约十年前开始研究 Selenium 代码以来,我一直在使用 Jetbrain 的 IntelliJ 来进行开发。它仍然是我 Java 工作的最喜欢的 IDE,而且使用起来非常有趣。一段时间以来,我一直在使用(免费的)社区版,它足以满足许多编码需求。

我的大部分工作都是用 Java 完成的,这也是我对 IDEA 最熟悉的领域。我涉猎 Ruby 和 Python,并且我在 IDEA 中编写了相当大量的 Javascript 代码。

优点

与其他优秀的 IDE 一样,IDEA 能够与许多不同的语言无缝协作。如果您是多语言程序员,能够使用相同的工具完成大部分工作会使生活轻松得多。在 Selenium 项目中,我们广泛使用 Java、C#、Ruby、Python 和 Javascript。我不做任何 C# 工作,我主要专注于 Java,但是对 JS、Ruby 和 Python 的支持非常好,而且似乎运行良好。内置的类型检测和代码导航功能令人印象深刻(特别是对于像 JS 这样的非类型化语言)

当然,使 IDEA 一开始如此出色的功能是它提供的各种重构选项。这些都很棒,而且一直都很棒。我注意到一个不错的功能是,当我们迈向 Java 8 的未来(终于!)时,它会提供建议来帮助迁移到有意义的新功能(并且,老实说,有时在它们没有意义时)。它使得使用 lambda 表达式变得容易得多。

有一段时间,IDEA 变得越来越慢和臃肿,但我很高兴看到,部分归功于 Facebook 的开发人员的工作,最新的版本感觉更流畅,并且可以更高效地处理更大的项目。我欣赏的一点是 Jetbrains 对接收其核心产品补丁的开放态度:它显示出对外部贡献者的尊重,我认为这很重要(当然,我会这么想:我从事 OSS 是为了好玩!)

IDEA 有很多可用的插件。我连接了 Buck 插件并使用了它。如果没有扩展 API,这个插件是不可能实现的,但是拥有它们非常有用,并且使 IDE 更加强大。

最后,关于 IDE 的优点,我喜欢 IDE 能够相对密切地跟踪 Java 的新版本 —— 很高兴看到我们将来可以使用哪些新的语言功能!

缺点

虽然它是一个很好的产品,但仍然存在一些小问题。

最令人恼火的是,内置的代码分析并不总是警告某些 Java 类无法编译。最近的一个例子是,IDEA 没有标记出某些 lambda 表达式无法使用,因为要使用的方法的选择不明确。这可能是因为 Java 语言继续其缓慢的推进,并且编译器在每个版本中都会有所改进 —— 当然,这些相同的文件在使用较旧的 Java 版本时编译得很好。

当错误发生时,我还没有找到允许 IDEA 尽可能继续运行的神奇设置。我喜欢 Eclipse 的一个功能是它可以尽可能地编译,即使存在无效的源文件。在进行 TDD 时,这可以让你稍微快一点,因为只要单元测试不涉及错误的代码,就可以运行并通过。我非常希望 IDEA 中也存在相同的功能!

在 Selenium 项目中,我们使用 Buck 进行构建。Buck 插件(尚未!)允许我在 IDE 中构建和运行测试,但 Buck 执行一些 IDE 无法重复的步骤,这些步骤是成功构建所必需的。IDEA 提供了在运行构建之前运行 Ant 步骤的功能,如果将其推广到“任何 shell 命令”将会非常有用。大多数时候,它都很好,但是忘记运行某些东西令人恼火!

总的来说,我非常喜欢 IntelliJ。它是一个快速且功能强大的 IDE,而且它背后的公司支持开源。有什么理由不喜欢呢?

上次修改时间:2021年8月7日:重命名目录 (e9895f27c26)