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,而且它背後的公司支援 OSS。 有什麼理由不喜歡呢?

上次修改時間為 2021 年 8 月 7 日:重新命名目錄 (e9895f27c26)