• Entwicklerin, Projekt- und Abteilungsleitung bei MEKO-S GmbH, Bremen, Germany • Hauptsächlich Projekte auf Basis von eclipse Technologie (RCP, RAP) • Vorträge auf Konferenzen • Organisation JUG Bremen 2 24.03.2015 JavaLand 2015 / Code Reviews (Rabea Gransberger @rgransberger)
sein! • Entwickler tippen/kopieren zu viel • IDE wird nur als Texteditor verwendet • Features der IDE sind unbekannt oder werden nicht genutzt • Einstellungen passen nicht zum Programmierstil 06.05.2015 JUG HH / Effektive IDE Nutzung (Rabea Gransberger @rgransberger)
der IDEs • Nur Behandlung der Java SE Tools (*.java kein *.jsp usw.) • Nicht alle Features werden gezeigt, in den Folien finden sich noch mehr Tipps • Kein: “Kennst du diesen Shortcut”-Vortrag 06.05.2015 JUG HH / Effektive IDE Nutzung (Rabea Gransberger @rgransberger)
Firma • Option 1: Export/Import (E)(JI)(N) –Export der Einstellungen –E-Mail mit der Datei an Teammitglieder –Empfänger importieren die Einstellungen • Option 2: Automatische Verteilung (E)(JI) –(E) Oomph: https://projects.eclipse.org/projects/tools.oomph –(E) eclipse.ini: -pluginCustomization customization.ini –(JI) JetBrains Konfigurations-Server oder Check-In in Versionskontrollsystem 06.05.2015 JUG HH / Effektive IDE Nutzung (Rabea Gransberger @rgransberger)
und gewünschte Einstellungen wählen • Speichern in einer Datei, z.B. test1.epf • Die Option die exportiert werden sollen ändern, neuer Export nach test2.epf • Diff zwischen test1.epf und test2.epf erstellen Zeile mit Unterschied in neue Datei kopieren und \instance\ Anfang entfernen • Neue Datei als plugin_customization.ini auf Netzlaufwerk speichern • Folgenden Zeilen hinzufügen in Datei <installdir>\eclipse.ini: -pluginCustomization <pathTo…>plugin_customization.ini • Diese Anleitung kann auch mit dem Workspace Mechanic Plugin verwendet werden 06.05.2015 JUG HH / Effektive IDE Nutzung (Rabea Gransberger @rgransberger)
Configuration Server Plugin • Team – Check-In des .idea Ordners in die Versionskontrolle ohne die Datei workspace.xml • Für sich selbst – Template Project Settings (werden auf neue Projekte angewendet) – File Other Settings Default Settings 06.05.2015 JUG HH / Effektive IDE Nutzung (Rabea Gransberger @rgransberger)
• Mehrere geöffnete IDE Instanzen mit je einem Projekt • Links auf dem Desktop zum Starten der IDE mit einem bestimmten Projekt • (E) Workspace -data D:\workspaces\JUGHamburg (General Workspace Workspace Name) • (JI) Project "D:\IdeaProjects\JUGHamburg" • (N) User Dir --userdir D:\netbeans\JUGHamburg 06.05.2015 JUG HH / Effektive IDE Nutzung (Rabea Gransberger @rgransberger)
(E) Kann pro workspace eingestellt werden, um diese leicht zu unterscheiden – General Appearance: Theme (CSS basiert, kann leicht selbst angepasst werden) • (JI) Einstellung pro Installation – Appearance UI Options: Theme • (N) Einstellung pro Projekt/User Dir – Appearance Look and Feel • Änderung der Editor/Konsolen Farben (z.B. dark theme) ist ebenfalls möglich – (E) General Editors Text Editors (JI) Editor Colors & Fonts General (N) Fonts & Colors Syntax – (E) Run/Debug Console (JI) Editor Colors & Fonts Console (N) Miscellaneous Terminal 06.05.2015 JUG HH / Effektive IDE Nutzung (Rabea Gransberger @rgransberger)
Plugins/Einstellungen • (E) Automatische Updates für Service Releases und Updates • (E) Für neue Major Releases bieten sich folgende Möglichkeiten 1) Neue Version runterladen + plugins installieren (File Export/Import Install) + zip für Team Mitglieder erstellen 2) Installation von der Kommandozeile oder Yoxos Profil 3) Installation mit Eclipse Oomph • (JI) Automatische Updates werden nach Möglichkeit angeboten – Möglichkeit einen Update-Kanal zu wählen (major/minor/patches) • (N) Automatische Updates von Plugins • (N) Neue Programmversionen herunterladen und installieren – Übernimmt Plugins aus vorherigen Versionen wenn kompatibel 06.05.2015 JUG HH / Effektive IDE Nutzung (Rabea Gransberger @rgransberger)
• Alte Revisionen können ohne externe Versionskontrolle wiederhergestellt werden • Wiederherstellung von gelöschten Dateien möglich (Kontextmenü auf Ordner) • Einstellungen der lokalen Historie sollten nach oben korrigiert werden – (E) General Workspace Local History – (JI) Version Control Limit history – (N) Misc Versioning Local History 06.05.2015 JUG HH / Effektive IDE Nutzung (Rabea Gransberger @rgransberger)
Zeilennummern einblenden: (E) General Editors Text Editors (JI)(N) autom. aktiv • Zwei Dateien vergleichen: (E)(JI) Kontextmenü: Compare (N) Tools Diff • Reiter in neues Fenster verschieben (DnD), Split-Editor neben-/übereinander • Einfügen von Code auf einem Package erstellt Klasse automatisch (E)(JI) • Spalteneditiermodus, z.B. um Maps zu erstellen (E)(JI)(N), Multi-Cursor (JI) • Reiter automatisch schließen wenn Limit überschritten (E)(JI) • Task Tags wie TODO und FIXME verwenden • Zu einer Zeile springen (E) Strg+L (JI) Strg+G (N) Strg+G 06.05.2015 JUG HH / Effektive IDE Nutzung (Rabea Gransberger @rgransberger)
Appearance Type Filters – (JI) Editor Auto Import Java: Exclude from Import and Completion – (N) Editor Code Completion Java: Package/Classes Exclude – Oder eines der Java 8 Kompaktprofile verwenden • Importe bei Einfügen aktualisieren (E)(N) Standard aktiv – (JI) Editor Auto Import • Anzahl von Importen für * für normale und statische Importe ggf. ändern 06.05.2015 JUG HH / Effektive IDE Nutzung (Rabea Gransberger @rgransberger)
Appearance Type Filters – (JI) Editor Auto Import Java: Exclude from Import and Completion – (N) Editor Code Completion Java: Package/Classes Exclude – Oder eines der Java 8 Kompaktprofile verwenden • Importe bei Einfügen aktualisieren (E)(N) Standard aktiv – (JI) Editor Auto Import • Anzahl von Importen für * für normale und statische Importe ggf. ändern 06.05.2015 JUG HH / Effektive IDE Nutzung (Rabea Gransberger @rgransberger)
(E)(JI)(N) • In Eclipse, z.B.: – Java Editor Save Actions – Formatierung + Imports – Klammern für Statements verwenden – Zugriffe auf Felder automatisch mit this – @Override und @Deprecated Annotationen hinzufügen • (E) Zusätzliche Clean-Up Profile, die manuell ausgeführt werden können – Menü: Source Clean Up 06.05.2015 JUG HH / Effektive IDE Nutzung (Rabea Gransberger @rgransberger)
zu tippen • Constructors/Fields/Getters/Setters/toString/equals/hashCode • Override/Implement methods • API verwenden die noch nicht existiert • Methode aufrufen und Zuweisung zur Variable generieren lassen • Felder aus Konstruktor-Parametern erstellen lassen • Quick Fixes / Intentions mit Vorschlägen der IDE verwenden • Abgekürzte Namen können für Vervollständigung verwendet werden • (E) Empfohlene Einstellungen: Completion overwrites, best guessed arguments • Getter/Setter? Lombok: https://projectlombok.org 06.05.2015 JUG HH / Effektive IDE Nutzung (Rabea Gransberger @rgransberger)
Code • Beispiele: Umbenennung, Verschieben, Signaturänderung – Extract variable, method, constant – Create superclass, interface, pull up, push down • Safe delete in (E) nicht verfügbar, kann aber wie folgt erreicht werden: – Body der gewünschten Methode leeren – Inline Refactoring verwenden, dies ersetzt den Methoden-Aufruf durch nichts • Umwandlung von anonymen Klassen in Lambda Ausdrücke 06.05.2015 JUG HH / Effektive IDE Nutzung (Rabea Gransberger @rgransberger)
als Lambdas an – Code ist leichter lesbar aber immer noch mit Java 7 kompatibel • Anonyme Klassen zu Lambdas umwandeln: – (E) Source Clean Up – (JI) Analyse Inspect Code – (N) Source Inspect 06.05.2015 JUG HH / Effektive IDE Nutzung (Rabea Gransberger @rgransberger)
Kompilierfehlern möglich • Mit Eclipse CodeRecommenders / Code Trails Connect lässt sich noch schneller arbeiten • Working Sets können in Projekten zur Gruppierung im Baum mit angezeigt werden • Wenn etwas nicht funktioniert, Error View öffnen (Strg+3) • Breakpoints-Ansicht erlaubt Gruppierung nach Projekt/Working Set • Search View erlaubt Anpinnen und Löschen von Einträgen • File New Scrapbook Page: Unvollständige Snippets in JVM testen • Suche in Suchresultaten Trick: – Search File… mit Suchtext ausführen – Kontextmenü auf Ergebnisse in Search Result View: Expand All, Show In Package Explorer – Search File: Scope = Selected Resources 06.05.2015 JUG HH / Effektive IDE Nutzung (Rabea Gransberger @rgransberger)
sehen welche Features man noch nicht verwendet • Unterstützung von Language Injections für Content Assist z.B. für SQL in Java Code • Alt+Shift+C um letzte Änderung an Projekt in Übersicht zu sehen • Intelligentes Suchen & Ersetzen: Structural Search • Presentation Mode: Vollbild bei Vorträgen verwenden • “Open copy in editor” Einstellung um zu vermeiden dass man falsche Datei editiert • Suche auf Strings und Kommentare beschränkbar • Content Assist bezieht aktuellen Kontext mit ein und macht bessere Vorschläge 06.05.2015 JUG HH / Effektive IDE Nutzung (Rabea Gransberger @rgransberger)
bekannten Profiler eingebettet • Snapshots/Heapdumps können geladen werden • JConsole und JMeter sind als Plugins verfügbar • Historie der Zwischenablage verfügbar über Strg+Shift+D • JDK 8 Compact Profile kann für Projekt konfiguriert werden und gibt Warnungen 06.05.2015 JUG HH / Effektive IDE Nutzung (Rabea Gransberger @rgransberger)
(N) http://netbeans.org/kb/index.html • Empfohlene Abschnitte: "Getting started" "Tips and Tricks" "Important Shortcuts" • In den Release Notes werden neue Features gelistet 06.05.2015 JUG HH / Effektive IDE Nutzung (Rabea Gransberger @rgransberger)
können mit eigenen Plugins erweitert werden • Feature Request können im Bugtracker hinterlegt werden • Bugs in der IDE sollten unbedingt gemeldet werden: – (E) http://bugs.eclipse.org – (JI) http://youtrack.jetbrains.com/dashboard – (N) http://netbeans.org/bugzilla 06.05.2015 JUG HH / Effektive IDE Nutzung (Rabea Gransberger @rgransberger)
• Sei faul und lass die IDE die Arbeit tun: Content Assist / Quick Fix / Vorlagen • Erstelle Einstellungen und teile dies mit deinem Team • Versuche in regelmäßigen Abständen Tastenkombinationen zu lernen 06.05.2015 JUG HH / Effektive IDE Nutzung (Rabea Gransberger @rgransberger)