IntelliJ
カテゴリ
毎年、Jetbrains 様には、Selenium プロジェクトに IntelliJ の OSS ライセンスをご寄贈いただいております。その一環として、Jetbrains 様から製品レビューのご依頼があり、(素晴らしいことに!)率直な意見を期待されているとのことでした。ですので、率直に意見を述べさせていただきます。
私がプロの Java 開発者だと人に言うと、一部の人々からは同情的な反応が返ってきたり、(時には)私のコーディング生活がいかに苦痛であるかを冗談めかして言われたりします。結局のところ、Ruby、さまざまなフレーバーの Javascript、Python、Haskell、さらには Scala や Clojure など JVM 上で動作する他の言語など、はるかにトレンディでヒップな言語がいくつかあります。一般的に行われているように、Java は比較的退屈な言語であるという点には私も同意する傾向があります。Java 8 には、Java 6 (!) アプリをまだサポートしなければならないため、多くの人が何年も使用しないであろう優れた機能が豊富に含まれています。私が批判者と意見が異なるのは、Java を使うことが開発者にとって同情すべきことだということです。Java 単独ではそれほど楽しいものではありませんが、Java と IntelliJ の組み合わせは、私のお気に入りのプログラミング体験の 1 つです。
私は 90 年代後半から Java を使用しており、2003 年頃から IntelliJ を断続的に使用しています。それから 10 年以上が経過し、「リファクタリングができる」という点で画期的だったツールは成熟しました。それは文字通り私のコードの書き方を変えました。今では「変数の導入」リファクタリングを使用して、変数値の初期代入を当然のこととして行う必要がなくなりました。実際、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。