Refaktoren in Java
Die folgenden beiden Programme erzeugen dieselbe Ausgabe.
Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( "12" ); }}java.lang.System.out
12
Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 12 ); }}java.lang.System.out
12
Eine benannten Anleitung zum Überarbeiten eines Quelltextes, so daß man die Überarbeitung durch Starten des Programmes („von außen“) nicht erkennen kann nennt man einen Refaktor. Der folgende Refaktor beschreibt den Übergang vom ersten Programm zum zweiten:
- Refaktor
- Entfernen überflüssiger Anführungszeichen
- Die Anführungszeichen eines Zeichenfolgenliterals können entfernt werden, wenn dies nur wenige Ziffern enthält, die mit dem Ausdruckrahmen ausgegeben werden sollen.
Insbesondere denkt man bei einem Refaktor an eine Anleitung zur Überarbeitung eines bereits korrekten Programms, bei der die Verständlichkeit des Quelltexts für Programmierer verbessert wird.
Man könnte den zweiten Quelltext als etwas besser ansehen als den ersten Quelltext, da er kürzer ist.
Ein etwas allgemeinere Definition von „Refaktor“
Ein Program, das eine zufällige Zahl ausgeben soll, hat (fast) immer eine andere Ausgabe, so daß hier kein Refaktor möglich wäre, da das Programm nach jeder Änderung eine andere Ausgabe erzeugt. Daher definieren wir „Refaktor“ tatsächlich folgendermaßen:
Wir gehen davon aus, daß ein Programm eine Spezifikation hat, welche besagt, wie sich das Programm unter gewissen Umständen verhalten soll.
Ein Refaktor ist eine Änderung an einem Programm, das seine Spezifikation sowohl vor als auch nach der Anwendung des Refaktors erfüllt.
Wenn die Spezifikation beispielsweise besagt, daß ein Programm eine zufällige Zahl mit 16 Nachkommastellen zwischen 0 und 1 ausgeben soll, dann sollte das Programm dies vor und nach dem Refaktor tun. (Der Beweis, daß dies so ist, erfolgt dabei weniger durch Beobachtung des Verhaltens als durch Analyse des Quelltextes.)
Stil
Wenn zwei Programme beide die Anforderungen erfüllen, dann ist die Wahl zwischen ihnen eine Frage des Stils. Unter „Stil “ versteht man beim Programmieren Regeln zur Wahl eines Quelltextes unter verschiedenen Quelltexten, die alle korrekt sind, also alle die Anforderungen erfüllen.
ℛ Stilregel Wenn es keine gewichtigeren Gründe für eine andere Entscheidung gibt, sollte von zwei Quelltexten, welche beide dieselbe Aufgabe lösen, der kürzere bevorzugt werden.
Niederschrift von Refaktoren *
Viele Refaktoren sind unter bestimmten kurzen Namen bekannt. Den obigen Refaktor könnte man beispielsweise „Entfernen von Anführungszeichen “ nennen.
Ein Refaktor sollte mindestens folgende Teile umfassen:
- einen Namen,
- die Voraussetzungen, unter denen er angewendet werden kann, und
- eine Anleitung zum Vornehmen dieses Refaktors.
- Für das obige Beispiel könnte man sich beispielsweise den folgenden Refaktor vorstellen.
- Refaktor
- Name
- Anführungszeichen um Numerale löschen
- Voraussetzung
- Der Wert eines Zeichenfolgenliterals, das aus einem Numerale in Anführungszeichen besteht, wird ausgegeben.
- Anleitung
- Die Anführungszeichen vor und hinter dem Numerale werden entfernt.