Der Refaktor "Umbenennen einer Konstanten" in Java [] (Der Refaktor "Umbenennen einer Konstanten" in Java), Lektion, Seite 723221
https://www.purl.org/stefan_ram/pub/konstantenumbenennung_java (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Java-Kurs

Der Refaktor „Umbenennung einer final-Variablen“ in Java 

Man kann einen Namen einen anderen Namen ersetzen (falls dies nicht zu einer Namenskollision führt). Dazu muß man den Namen in seiner der Deklaration und an allen Stellen innerhalb des Gültigkeitsbereichs dieser Deklaration, an denen er im Sinne dieser Deklaration verwendet wird, durch den neuen Namen ersetzen.

Dies ist ein Refaktor, weil eine solche Umbenennung das Verhalten des Programms nicht verändert.

Indikation Dieser Refaktor wird verwendet, wenn der Name einer final-Variablen dem Programmierer nicht gefällt und er ihn durch einen anderen Namen ersetzen will.

Das folgende Programm enthält beispielsweise eine lokale final-Variable namens »k«.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ final int k = 22; java.lang.System.out.println( k ); }}
java.lang.System.out
22

Das folgende gleichwertige Programm enthält eine lokale final-Variable namens »n«. Dieses Programm kann man durch eine Umbenennung der final-Variablen »k« aus dem vorigen Programm gewinnen.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ final int n = 22; java.lang.System.out.println( n ); }}
java.lang.System.out
22

In dem folgenden Beispiel umfaßt der Gültigkeitsbereich der ersten  lokale final-Variablen »i« nur einen inneren Block.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ { final int i = 3; java.lang.System.out.println( i ); }
{ final int i = 7; java.lang.System.out.println( i ); }}}
java.lang.System.out
3
7

Soll die erste lokale final-Variable des obigen Programms umbenannt werden, so ist sie in der Deklaration und überall innerhalb  ihres Gültigkeitsbereichs umzubenennen. Die zweite final-Variable, die ebenfalls den Namen »i« hat, ist dadurch als nicht betroffen.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ { final int k = 3; java.lang.System.out.println( k ); }
{ final int i = 7; java.lang.System.out.println( i ); }}}
java.lang.System.out
3
7

Die Umbenennung macht den Unterschied zwischen Namen und Literalen  deutlich: Während ein Name verändert  werden kann, ohne daß sich dadurch sein Wert ändern muß, wird der Wert eines Literals aus seiner Schreibweise abgeleitet, weswegen die Schreibweise eines Literals im allgemeinen nicht  verändert werden kann, ohne dabei auch den Wert des Literals zu ändern. Ein Literal gibt einen Wert durch die Zeichen an, aus denen es besteht. Es kann nicht wie ein Name „umbenannt“ werden.

Übungsfragen

?   Anwendung des Refaktors „Umbenennung einer final-Variablen“

Wurde der Refaktor „Umbenennung einer final-Variablen“ beim Übergang zwischen den beiden folgenden Programmen richtig angewendet? Begründen Sie ihre Antwort!

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ final int n = 4;
java.lang.System.out.println( n + 1 ); }}
Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ final int i = 4;
java.lang.System.out.println( n + 1 ); }}

Übungsaufgaben

/   Anwendung des Refaktors „Umbenennung einer final-Variablen“

Überarbeiten Sie das folgende Programm so, daß jede final-Variable einen eigenen Namen hat!

(Hierzu dürfen nur Umbenennungen von final-Variablen vorgenommen werden. Die Ausgabe des Programms soll sich nicht verändern.)

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ { final double v = 3.2; java.lang.System.out.println( v ); }
{ final int v = 7; java.lang.System.out.println( v ); }
{ final java.lang.String v = "string"; java.lang.System.out.println( v ); }}}
Protokoll
3.2
7
string

/   Anwendung des Refaktors „Umbenennung einer final-Variablen“

Überarbeiten Sie das folgende Programm so, daß alle final-Variablen denselben Namen haben!

(Hierzu dürfen nur Umbenennungen von final-Variablen vorgenommen werden. Die Ausgabe des Programms soll sich nicht verändern.)

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ { final java.lang.String text0 = "Computertastaturen"; java.lang.System.out.println( text0 ); }
{ final java.lang.String text1 = "Datenverarbeitungen"; java.lang.System.out.println( text1 ); }
{ final java.lang.String text2 = "Haupthimmelsrichtungen"; java.lang.System.out.println( text2 ); }}}
Protokoll
Computertastaturen
Datenverarbeitungen
Haupthimmelsrichtungen

/   Anwendung des Refaktors „Umbenennung einer final-Variablen“

Überarbeiten Sie das folgende Programm so, daß alle final-Variablen denselben Namen haben!

(Hierzu dürfen nur Umbenennungen von final-Variablen vorgenommen und geschweifte Klammern eingefügt werden. Die Ausgabe des Programms soll sich nicht verändern.)

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ final double x0 = 3.1; java.lang.System.out.println( java.lang.Math.sin( x0 ));
final double x1 = 2.7; java.lang.System.out.println( java.lang.Math.sin( x1 ));
final double x2 = 1.8; java.lang.System.out.println( java.lang.Math.sin( x2 )); }}
Protokoll
0.04158066243329049
0.4273798802338298
0.9738476308781951

 

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723221 stefan_ram:723221 Der Refaktor "Umbenennen einer Konstanten" in Java Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723221, slrprddef723221, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/konstantenumbenennung_java