Archiv für die Kategorie ‘eclipse’

Die kleinen Helfer von Eclipse

Montag, 01. Februar 2010

Dass Eclipse vieles zum komfortablen Entwickeln bietet, dürfte jedem Entwickler klar sein. Sicherlich kennen viele die Möglichkeit, Getter und Setter generieren zu lassen, so dass einem eine Menge stupider Schreibarbeit erspart bleibt. Ebenfalls unter dem Menü Source (Shortcut: ALT+SHIFT+S) findet man weitere Möglichkeiten, um trivialen Code generieren zu lassen. Hierzu gehört z.B. das Erzeugen des Konstruktors, welcher alle Felder als Parameter hat. Interessant ist aber auf jeden Fall auch der toString-Generator. Wer kennt es nicht, wenn in den Log-Ausgaben kryptische Java-ReferenzIds stehen. Da wünscht man sich, man hätte toString() überschrieben, um ein paar mehr Informationen für die Fehlersuche zu bekommen. Wie bei den Getter und Setter Methoden, kann man sich die Schreibarbeit ersparen und einen Generator bemühen, der einem alle gewünschten Felder ausgibt. Ein großes Plus ist auch die Konfigurierbarkeit – man kann z.B. auch angeben, welchen Builder man für die Erzeugung des Strings nutzen möchte oder nach welchem Muster der String erzeugt werden soll.

toString-Methode generieren

Ein Blick lohnt sich auf jeden Fall!


Andreas Siepert


Eclipse Shortcuts Teil 2

Freitag, 08. Januar 2010

Eclipse verfügt über unzählige Shortcuts für nahezu alle Funktionen und Befehle. Jedes mal wenn ich auf der Suche nach neuen Shortcuts war, stieß ich auf lange unüberschaubare Listen. Es waren einfach zu viele neue Befehle um sich etwas zu merken. Neue Befehle habe ich fast nur durch abgucken gelernt. Auf diese Weise lerne ich nur einen neuen Shortcut, der mich dann auch gerade interessiert. Was bringen mir 100 Shortcuts, wenn ich vorher immer überlegen bzw. 2 mal probieren muss um den richtigen zu treffen. Da bleibe ich dann lieber “Mausschubser”.

Für diese Liste habe ich nun den Vormittag über jeden Shortcut, den ich benutzt habe in eine Datei getippt. Für diese Befehle brauche ich nicht nachdenken. Für alles andere verwende ich dann lieber die Maus.

STRG + d – Entfernen einer ganzen Zeile.

ALT + UP/DOWN – Verschieben der aktuellen Zeile nach oben oder unten.

ALT + LEFT/RIGHT – Springen zwischen den letzten bearbeiteten Zeilen.

STRG + 1 -Zeigt für die aktuelle Zeile die möglichen “quick fix” optionen an (z.b. Variable zuweisen, umbennen usw.). Für die meisten Optionen gibt es auch direkte Shortcuts aber die brauche ich mir so nicht merken. Nur durch diesen Shortcut ist diese Liste so kurz geblieben.

STRG + (SHIFT) + j – Suche im aktuellen Editor ohne Dialog. Diese Suche funktioniert ähnlich der Suche im Firefox. Nach dem drücken von STRG + J einfach das gesuchte Wort zu tippen. Im Editor wird dann nächsten möglichen Treffer gesprungen. Mit Shift wird die Suchrichtung geändert. Wiederholtes drücken spring zum nächsten möglichen Treffer.

STRG + SHIFT + t – Direktes öffnen einer Klasse. Neben ganzen Klassennamen können im Suchfeld auch nur die Großbuchstaben einer Klasse eingeben werden, wenn diese einen “Camel Case” Namen trägt (z.B. MTK für “MeineTestKlasse”, wenn es mehrere Treffer gibt dann funktioniert auch “MTKlas”).

STRG + SHIFT + r – Ähnlich der Suche einer Klasse, nur für beliebige Dateien.

STRG + SHIFT + g – “Java Search” für den markierten Code. Sehr hilfreich um Stellen zu finden, an denen eine Klasse verwendet oder eine Methode aufgerufen wird.

STRG + SPACE – Der Klassiker, kennt wohl wirklich jeder. Vervollständigung einer Methode, Klasse oder Variablen.

STRG + o – Zeigt innerhalb einer geöffneten Klasse alle darin befindlichen Methoden an, um dorthin springen zu können. Durch wiederholtes drücken können zusätzlich die geerbten Methoden angezeigt werden.

STRG + t – Zeigt auf einer Klasse die Vererbungshirarchie an, bzw. auf einer Methode die ggf. überschriebenen Methoden der Oberklassen an.

STRG + SHIFT + F – Formatieren der geöffneten Datei. Ist dank der Save Action nicht mehr wirklich notwendig. Ich brauche es nur noch für XML Dateien, da bei mir die Save Actions dort nicht ausgeführt werden.

STRG + 7 – Text aus/einkommentieren.

ALT + SHIFT + R – Umbennen einer Klasse Variablen oder Methode.

Speichern, also STRG + s braucht man ja eigentlich nicht mehr erwähnen. Bei vielen Entwicklern die ich kenne ist STRG + s ein Reflex und kein bewußter Befehl. Copy & Past benutze ich natürlich fast nie beim Entiwckeln ;-) .


Felix Breske


Organisation von Testklassenhierarchien

Freitag, 27. März 2009

Jeder weiß, dass frühzeitiges und intensives Testen die Entwicklungszeit und -kosten gering hält und trotzdem: Der Softwaretest ist ein gern vernachlässigtes Kapitel der Softwareentwicklung. Es mag vielleicht daran liegen, dass viele Unit-Tests zu viel sich wiederholenden Quelltext haben. Dabei bringen die objektorientierten Programmiersprachen Konzepte mit, die man in den Tests so einsetzen kann wie in dem getesteten System (SUT, system under test).

Die Konzepte Vererbung, Polymorphie und Generizität erlauben es, klassenorientierte Testfälle zu schreiben, die dann auf alle Unterklassen der CUT (class under test) angewandt werden können. In der Literatur gibt es dazu den Begriff des symmetrischen Testtreibers („Symmetric Driver“), was nichts anderes heißt, als dass parallel zu einer Klassenhierarchie eine Testklassenhierarchie geschrieben wird. Der Name resultiert daher, dass die Testklassenhierarchie symmetrisch zur Klassenhierarchie des SUT ist. Das beigefügte Dokumente zeigt, wie die Testfallhierarchie zu einer Klassenhierarchie aussehen kann. Strukturelemente wie die Testobjekte (OUTs, OUT = object under test) sollten protected sein, sodass Unterklassen darauf zugreifen können. Die Testmethoden sind public, wie es das Testframework, z. B. JUnit, erfordert.

Illustration der allgemeinen Testklassenhierarchie

Dass Testfälle auf Unterklassenmethoden wiederholt werden, klingt vielleicht nach Redundanz, ist aber pure Notwendigkeit. Die kürzlich mit dem Turing-Preis ausgezeichnete Barbara Liskov postulierte, dass Vorbedingungen (oder auch: der Definitionsbereich) einer überschriebenen Methode nicht eingeschränkt werden dürfen. Die Nachbedingungen dürfen eingeschränkt werden, aber nicht erweitert werden. Solche Eigenschaften sollten nach Möglichkeit durch die gesamte Klassenhierarchie erhalten bleiben und eignen sich hervorragend für der „Symmetric Driver“.

Der Aufbau der Testklassenhierarchie demonstriert die Stärke objektorientierter Modellierung. Objektorientierte Softwareentwicklung hat viele Fehlerquellen beseitigt, aber es kommen auch neue hinzu, wie z. B. eingeschränkte Vorbedingungen von überschriebenen Methoden. Die Testklassenhierarchie ist hilfreich beim systematischen Aufdecken von Fehlern des objektorientierten Entwurfes.

Die Verletzung des Liskovschen Substitutionsprinzips zeigt folgendes Beispiel:

class A {
  public void method(int n) {
     if (n < 0) throw new IllegalArgumentException();
  }
}
 
class B extends A {
 public void method(int n) {
     if (n < 1) throw new IllegalArgumentException();
  }

Die folgende Testklassenhierarchie findet den Fehler, vorausgesetzt, es werden die richtigen Datenpunkte definiert.

@RunWith(Theories.class)
class TestA {
 
   @Datapoint
   public static final Integer int1 = Integer.valueOf(0);
   protected A out;
  @Before
   public void setUp() {
     out = new A();
   }
 
   @Theory
   public smokeTest(int n) {
     assumeTrue(n>=0);
     out.method(n);
   }
}
 
class TestB extends TestA {
  @Before
   public void setUp() {
      out = new B();
   }
}

Alexander Draeger


Eclipse Shortcuts

Donnerstag, 26. Juni 2008

Eclipse bietet eine Fülle von Funktionen und nahezu so viele Shortcuts. Ich möchte ein paar (für mich) wichtige Shortcuts vorstellen, die vielleicht noch unbekannt sind.

Ein Überblick über die wichtigsten Shortcuts gibt es mit Hilfe von STRG+SHIFT+L, die Einstellungen finden sich im Menü unter Window→Preferences… General→Keys.

Besonders durch Firefox, aber auch durch andere Anwendungen, sind Tabs (”Reiter”) zur Organisation von mehreren Darstellungsflächen innerhalb einer Anwendung populär geworden.  Es etablierte sich der Quasistandard STRG+TAB für das Wechseln zwischen den einzelnen Darstellungen (STRG+SHIFT+TAB rückwärts). Das Wechseln zwischen verschiedenen Fenstern (ALT+TAB) verhält sich analog. Um dieses verhalten in Eclipse zu erreichen, müssen wir die Einstellungen von “Previous Editor” und “Next Editor” auf die gewünschte Tastenkombination stellen.

Besonders bei großen Projekten dauert es oft lange eine geöffnete Datei im “Package Explorer” zu lokalisieren. Dies erleichtert der Command “Show in menu”. Durch ALT+SHIFT+W erscheint ein Menü direkt am Cursor, in dem man “Package Explorer” auswählt. Dieser springt nun an die richtige Stelle. Nicht jedoch mit STRG+ALT+W zu verwechseln, dieses Kürzel schließt alle offenen Editoren.

Kennt man den Namen einer Resource, weiß aber nicht wo im Projekt sie zu finden ist hilft der Dialog “Open Resource”. Mit STRG+SHIFT+R öffnet sich eine Suchmaske mit sofortiger Rückmeldung.

Beim Erstellen neuer Klassen, gerade bei Datenhaltungs-Objekten (ValueObjects) mit vielen Intstanzvariablen, wird Programmieren zur reinen Schreibarbeit. Hier ist es sehr Hilfreich, dass Eclipse erlaubt, getter- und setter-Methoden sowie Kontruktoren zu generieren.  Mit ALT+SHIFT+S öffnet sich das “Source”-Menü, mit der Taste R wird der Dialog zum Generieren der getter und setter Methoden geöffnet (ALT+SHIFT+S, R). Ähnlich erreicht man den Dialog zum Erzeugen eines Constructors (ALT+SHIFT+S, O).

Welches sind eure am häufigsten genutzten Shortcuts (STRG+S zählt nicht)?


Jan Kuenstler