Ich sammel hier mal ein wenig, was ich an IntelliJ 14 so großartig finde, dass es mir Wert ist, 200€ in eine Entwicklungsumgebung zu investieren, obwohl es kostenlose Alternativen (etwa Eclipse) gibt.
Ich unterteile es in die Verschiedenen Kategorien, in denen ich mit IntelliJ entwickle. Das allein ist schon geil, dass ich sowohl bei Java, PHP und JavaScript großartig unterstützt werde. Meine Erfahrungen mit PHPEclipse und EclipsePHP waren eher von der grausamen Sorte…mit JavaScript kommt Eclipse auch nur dann gut zurande, wenn man nicht zu viele Technologien mischt.
Das soll kein Lobhymnen-Artikel auf IntelliJ werden (wobei sich das sicher nicht vermeiden lässt, bei dem Titel), ich möchte vielmehr (in erster Linie für mich selbst) diese ganzen Aha-Momente, die ich derzeit mit dem Tool erlebe in Erinnerung behalten.
IDE Allgemein
Zeilennummern einblenden
Im Visual-Studio suche ich bei jeder neuen Version immer wieder diese Einstellung. Zeilennummern einblenden. Wer sich ausgedacht hat, dass diese Einstellung im Standard aus sein soll, sollte nochmal nachdenken. Das gilt auch für IntelliJ, im Standard sind die da auch ausgeblendet.
Dort lassen sie sich aber via Rechtsklick auf die Spalte links vom Editor sehr komfortabel über ein Kontextmenü einblenden. In Eclipse geht das übrigens genauso.
Das VisualStudio 2015 bietet das leider immer noch nicht…naja, wenigstens kann man seit 2013 in den Einstellungen suchen…
Das Terminal Window
Ein Tool-Window, in dem man Befehle für das Betriebssystem aufrufen kann, welches in die IDE integriert ist und direkt im richtigen Verzeichnis steht? Mit farbiger Console, der Möglichkeit mehrere Konsolen in Tabs zu öffnen und den Tabs auch noch per einfachem Doppelklick einen neuen Namen geben zu können? Super.
Vor allem, wenn man schonmal Maven-, node.js- oder Bower-Kommandos ausführen muss oder will, ist dies eine enorme Hilfe. Und so intuitiv…
PHP
Einbindung integrierter Webserver
PHP 5.2+ verwenden, Start-Konfiguration anlegen. Läuft. Geil.
Debuggen
Ist XDebug n PHP aktiviert, muss man nix machen, außer eine Start-Konfiguration anlegen. In EclipsePHP, PHPEclipse und NetBeans habe ich es nie hinbekommen, in PHP zu debuggen. Hier läuft es einfach.
Composer
Composer runterladen und bekanntmachen. Danach funktioniert die Einbindung einfach nahtlos. Ich würde mir noch ein „Remove Dependency“ wünschen, das mach es einfacher, nicht mehr benötigte Abhängigkeiten zu entfernen.
Aber wie geil IntelliJ einfach mal alle relevanten Dateien aktualisiert, nur weil man ein Verzeichnis unterhalb von vendor gelöscht hat…cool.
Java
Maven
Die Maven-Integration ist einfach nur der Hammer. Im Grunde so, wie man sich das vorstellt, oder erwartet…aber wer das gehampel in Eclipse kennt, ist hier einfach nur happy.
Projekt Importieren -> POM auswählen -> ein wenig warten -> funktioniert. Cool!
Oder wenn mal einige wichtige Abhängigkeiten geändert wurden. Unerklärliche Build-Errors? Reimport Maven-Projects aufrufen und schon läuft es wieder. Einmal…ja, man klickt genau einmal auf den Button, wartet nen Moment und schon geht es weiter. Hach…
Ich habe eben meine settings.xml in meinem .m2-Vereichnis geändert, weil ich unser Firmenrepository anbinden musste. Ich wollte gerade zurück nach IntelliJ und den Reimport anstoßen…da war der schon mitten dabei. Das Tool hat einfach mitbekommen, dass es eine Änderung gab und sich die fehlenden Bibliotheken geholt. Großartig.
Refactoring
Für eine Vorbereitung im Rahmen unseres Developer-Blogs auf invidit.de haben wir die Refactoring-Methode Extract Method verwendet. Dabei sollten die markierten Zeilen aus einem TicTacToe-Spiel mit folgendem Code refactored werden:
1 2 3 4 5 6 7 |
if (winner != null) { System.out.println("========================================"); System.out.println(this.playfield.toString()); System.out.println("Winner is '" + winner.getName() + "'"); System.out.println("========================================"); System.exit(0); } |
Kontext-Menü -> Refactor -> Extract -> Extract Method aufrufen (oder STRG + ALT + M) und schon erscheint ein Dialog, indem ich den Namen der neuen Methode bestimmen kann. Ich wähle _printWinner_ und klicke OK.
Nun erschien ein überraschender Dialog. IntelliJ macht den Vorschlag, statt des naheliegenden Parameters _winner_ zu übergeben, lieber gleich den zusammengesetzten Wert zu übergeben, der dann anschließend gedruckt wird. Wir brauchen von _winner_ nur den Namen. Ok das klingt nach einem guten Vorschlag, das will ich so. Danke IntelliJ!
Aber nun kommt es erst.
Ein paar Zeilen weiter unten befindet sich folgender Code:
1 2 3 4 5 6 7 |
if (this.playfield.isGameTerminated()) { System.out.println("========================================"); System.out.println(this.playfield.toString()); System.out.println("Game is a draw."); System.out.println("========================================"); System.exit(0); } |
Es erscheint ein weiterer Dialog mit der Überschrift _Process Duplicate 1 of 1_ und der Frage: „Do you want to replace this occurence?“.
Diese Code-Duplizierung wurde von IntelliJ erkannt und es wird mir direkt angeboten, diese mit zu ersetzen. Wow!
Java-Script
Karma
Ich sag nur Unit-Test im Java-Script-Umfeld mit Karma. Eigentlich kann das Plugin nichts besonderes, es zeigt rote oder grüne Balken an. Das kann jedes Unit-Test-Tool. Aber im JavaScript-Umfeld hab ich das einfach noch nirgendwo gesehen. Einfach klasse.