JavaRush /Java-Blog /Random-DE /Globale Variablen in Java: Wann werden sie verwendet?
Анзор Кармов
Level 31
Санкт-Петербург

Globale Variablen in Java: Wann werden sie verwendet?

Veröffentlicht in der Gruppe Random-DE
Hallo! In diesem Artikel werden wir über globale Variablen, ihre Deklaration und Beispiele für die entsprechende Verwendung sprechen. Eine kleine Anmerkung: Wir werden keine globalen Klassenvariablen berücksichtigen, also solche, auf die innerhalb einer Klasse zugegriffen werden kann. Wir werden über globale Variablen der gesamten Anwendung sprechen – solche, auf die innerhalb der gesamten Anwendung zugegriffen werden kann. Globale Variablen in Java: Wann werden sie verwendet?  - 1

So erstellen Sie globale Variablen

Globale Variablen sind Variablen, auf die von überall in der Anwendung aus zugegriffen werden kann. Mit anderen Worten: Ihr Geltungsbereich umfasst die gesamte Anwendung. Um eine solche Variable in Java zu erstellen, müssen Sie eine öffentliche statische Variable in einer öffentlichen Klasse erstellen:
public class Example {
    public static int a;
    public static int b;
    public static String str;
}
Die Variablen a, bund str- sind global geworden. Wir können direkt von anderen Klassen innerhalb der Anwendung darauf zugreifen:
public class GlobalVarsDemo {
    public static void main(String[] args) {
        Example.a = 4;
        Example.b = 5;
        Example.str = "Global String variable value";

        System.out.println(Example.a);
        System.out.println(Example.b);
        System.out.println(Example.str);
    }
}
Wenn wir die Methode ausführen main, sehen wir die folgende Ausgabe:

4
5
Global String variable value
Globale Variablen können in zwei Typen unterteilt werden:
  • Variablen, die bearbeitet werden können;
  • Variablen, die nur gelesen werden können.
Letztere werden globale Konstanten genannt. Um eine globale Konstante zu erstellen, müssen Sie eine Variable erstellen finalund ihr beim Definieren der Variablen einen Wert zuweisen:
public class Constants {

    public static final double PI = 3.1415926535897932384626433832795;
    public static final String HELLO_WORLD_STR = "Hello, World!";

}
Gemäß der Java-Namenskonvention müssen alle Konstanten in Großbuchstaben benannt werden, wobei Wörter durch einen Unterstrich getrennt werden müssen. Wir haben also Konstanten erstellt und können ihre Werte jetzt nicht mehr ändern. Globale Variablen in Java: Wann werden sie verwendet?  - 2Wir können ihre Werte jedoch lesen:
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println(Constants.HELLO_WORLD_STR);
    }
}
Abschluss:

Hello, World!
public class ConstantsDemo {
    public static void main(String[] args) {
        double r = 10;
        String message = String.format("Площадь круга с радиусом %f=%f", r, getCircleSquare(r));
        System.out.println(message);

    }

    static double getCircleSquare(double r) {
        return Constants.PI * r * r;
    }
}
Abschluss:

Площадь круга с радиусом 10,000000=314,159265

Sollten Sie globale Variablen verwenden?

Es gibt viele Artikel im Internet, deren Hauptbotschaft diese lautet: Globale Variablen sind böse, schlecht und schrecklich. Ist das wirklich? Versuchen wir, die Vor- und Nachteile globaler Variablen darzulegen, damit jeder seine eigenen Schlussfolgerungen ziehen kann. Globale Variablen in Java: Wann werden sie verwendet?  - 3Beginnen wir mit den Nachteilen. Stellen wir uns eine Anwendung vor, die über eine Klasse mit globalen Variablen verfügt, die gelesen und bearbeitet werden können. Mit der Zeit wächst die Anzahl der Klassen im Projekt, die Anzahl globaler Variablen und Methoden, die globale Variablen verwenden, also von ihnen abhängen. Im Laufe der Zeit wird jede globale Variable in verschiedenen Teilen des Systems für unterschiedliche Zwecke gelesen. Der Wert einer Variablen kann in verschiedenen Teilen des Systems aktualisiert werden. Das Gesamtbild der Welt dieser Anwendung wird deutlich komplizierter, was zu folgenden Nachteilen führt :
  1. Reduzierte Lesbarkeit und erhöhte Schwierigkeiten beim Verstehen des Codes.
  2. Erhöhte Komplexität der Codepflege.
  3. Um eine globale Variable zu ändern, muss der gesamte Code analysiert werden, um die Variable nicht auf einen Wert zu setzen, der für andere Teile des Systems ungültig ist.
  4. Zunahme von Fehlern, die sehr schwer zu debuggen sind.

    Stellen wir uns eine globale Variable vor, ein Array von Objekten. In einem Teil des Systems werden beispielsweise Strings in diesem Array erwartet, und in einem anderen Teil des Systems hat sich jemand für die Verwendung von Gleitkommazahlen entschieden. Es ist unwahrscheinlich, dass irgendjemand das verstehen möchte.

  5. Die Variablennamen können identisch sein, wenn Sie in Ihrem Code globale Variablen verwenden, sowie bei einigen Bibliotheken, die wiederum auch globale Variablen verwenden. Dies kann sowohl auf der Seite Ihrer Anwendung als auch auf der Seite der von Ihnen verwendeten Bibliothek zu Fehlern führen.
  6. Erhöht die Konnektivität zwischen verschiedenen Teilen des Systems, die globale Variablen verwenden. Im Gegenteil, Sie sollten eine lockere Kopplung des Codes anstreben. Es ist besser, viele kleine Subsysteme lose miteinander zu verbinden, als nur ein großes Ding. Weil es für das Gehirn einfacher ist, mit mehreren einfachen Dingen umzugehen, als mit einer zu komplexen und verwirrenden Sache.
  7. Das Schreiben von Komponententests wird schwieriger, da der Test nicht weiß, welche globalen Variablen benötigt werden und wie sie initialisiert werden müssen.
  8. In Multithread-Anwendungen führt die Verwendung globaler Variablen durch verschiedene Threads zu einer Zunahme schwer zu debuggender Fehler und zu einer Erhöhung der Projektkomplexität. Aus diesem Grund ist es notwendig, den Zugriff auf solche Variablen korrekter zu konfigurieren und sie mit Synchronisierungen und Sperren auszustatten. Dies kann in Zukunft zu Kurzschlüssen führen. Beispielsweise hat Thread A die Variable
Aber das ist alles ungenau. Dies ist eine Beschreibung von Risiken, deren Wahrscheinlichkeit mit dem Wachstum des Projekts und der Zunahme der Anzahl der darin enthaltenen globalen Variablen zunimmt. Kommen wir zu den Profis :
  1. In kleinen Projekten sind globale Variablen die einfachste Möglichkeit, das Projekt zum Laufen zu bringen.
  2. Manchmal führt die Angst vor der Verwendung globaler Variablen zu noch mehr Komplexität im Projekt. Dann beginnen Programmierer, Singletons zu erstellen und auf andere Entwurfsmuster zurückzugreifen.
  3. Beim Programmieren muss man sich oft auf einige unveränderliche Werte verlassen.

    Am sinnvollsten ist es, solche Werte als Konstanten zu schreiben, denn nur Konstanten garantieren, dass sich der Wert einer Variablen im Laufe der Zeit nicht ändert. Solche Konstanten können ständig gefunden werden ( Integer.MAX_VALUE, Integer.MIN_VALUE, Boolean.TRUEusw. Collections.EMPTY_LIST). Die Programmierung beschränkt sich jedoch nicht nur auf die Verwendung von Standardbibliotheken. Es kommt oft vor, dass Sie eine einzigartige Logik schreiben müssen, die auf Ihren eigenen einzigartigen Konstanten basieren muss. Deshalb macht die Verwendung von Konstanten (schreibgeschützte globale Variablen) manchmal das Leben wirklich einfacher.

Im Allgemeinen sollten Sie globale Variablen nicht überbeanspruchen; wenn möglich, verwenden Sie nur Konstanten. Es wurde zuvor gesagt, dass die Verwendung globaler Variablen in kleinen Projekten nicht schlecht ist. Für einen unerfahrenen Entwickler ist es jedoch besser, sie überhaupt nicht zu verwenden. Aus zwei Gründen:
  1. Alles, was ein unerfahrener Entwickler schreibt, ist im Wesentlichen ein kleines Projekt. Und die Verwendung globaler Variablen in seinen Projekten wird ihm beibringen, überall globale Variablen zu verwenden.
  2. Besser ist es, erst einmal zu lernen, auf „verbotene Tricks“ zu verzichten. Und mit zunehmender Erfahrung wird das Verständnis dafür, wann der Einsatz solcher Techniken angemessen ist, von selbst kommen.
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION