JavaRush /Java Blog /Random-ID /Variabel Global di Java: Kapan Menggunakannya?
Анзор Кармов
Level 31
Санкт-Петербург

Variabel Global di Java: Kapan Menggunakannya?

Dipublikasikan di grup Random-ID
Halo! Pada artikel ini kita akan membahas tentang variabel global, deklarasinya, dan contoh penggunaan yang tepat. Catatan kecil: kami tidak akan mempertimbangkan variabel kelas global, yaitu variabel yang dapat diakses dalam satu kelas mana pun. Kita akan berbicara tentang variabel global dari keseluruhan aplikasi - variabel yang dapat diakses dalam keseluruhan aplikasi. Variabel Global di Java: Kapan Menggunakannya?  - 1

Cara membuat variabel global

Variabel global adalah variabel yang dapat diakses dari mana saja dalam aplikasi. Dengan kata lain, cakupannya adalah keseluruhan aplikasi. Untuk membuat variabel seperti itu di Java, Anda perlu membuat variabel statis publik di kelas publik:
public class Example {
    public static int a;
    public static int b;
    public static String str;
}
Variabel a, bdan str- telah menjadi global. Kita dapat mengaksesnya langsung dari kelas lain di dalam aplikasi:
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);
    }
}
Jika kita menjalankan metode tersebut main, kita akan melihat output berikut:

4
5
Global String variable value
Variabel global dapat dibagi menjadi 2 jenis:
  • variabel yang dapat diedit;
  • variabel yang hanya bisa dibaca.
Yang terakhir ini disebut konstanta global. Untuk membuat konstanta global, Anda perlu membuat variabel finaldan memberikan nilai padanya saat mendefinisikan variabel:
public class Constants {

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

}
Menurut konvensi penamaan Java, semua konstanta harus diberi nama dalam huruf besar, memisahkan kata-kata dengan karakter garis bawah. Jadi, kita telah membuat konstanta, dan sekarang kita tidak akan bisa mengubah nilainya: Variabel Global di Java: Kapan Menggunakannya?  - 2Namun, kita bisa membaca nilainya:
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println(Constants.HELLO_WORLD_STR);
    }
}
Kesimpulan:

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;
    }
}
Kesimpulan:

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

Haruskah Anda menggunakan variabel global?

Ada banyak artikel di Internet, pesan utamanya adalah: variabel global itu jahat, buruk, dan mengerikan. Benarkah? Mari kita coba memberikan pro dan kontra dari variabel global sehingga setiap orang dapat menarik kesimpulannya sendiri. Variabel Global di Java: Kapan Menggunakannya?  - 3Mari kita mulai dengan yang kontra. Bayangkan sebuah aplikasi yang memiliki kelas dengan variabel global yang dapat dibaca dan diedit. Seiring waktu, jumlah kelas dalam proyek, jumlah variabel global, dan metode yang menggunakan variabel global, atau dengan kata lain, bergantung padanya, bertambah. Seiring waktu, setiap variabel global dibaca di berbagai bagian sistem untuk tujuan berbeda. Di berbagai bagian sistem, nilai suatu variabel dapat diperbarui. Gambaran keseluruhan dunia aplikasi ini menjadi jauh lebih rumit, dan hal ini menyebabkan kerugian sebagai berikut :
  1. Mengurangi keterbacaan dan meningkatkan kesulitan dalam memahami kode.
  2. Peningkatan kompleksitas pemeliharaan kode.
  3. Untuk mengubah satu variabel global, perlu dilakukan analisis seluruh kode agar variabel tidak disetel ke nilai yang tidak valid untuk bagian lain dari sistem.
  4. Peningkatan kesalahan yang sangat sulit untuk di-debug.

    Mari kita bayangkan sebuah variabel global, sebuah array objek. Di satu bagian sistem, misalnya, string diharapkan ada dalam array ini, dan di bagian lain sistem, seseorang memutuskan untuk menggunakan angka floating point. Tidak mungkin ada orang yang mau memahami hal ini.

  5. Nama variabel mungkin sama jika Anda menggunakan variabel global dalam kode Anda, serta beberapa perpustakaan yang juga menggunakan variabel global. Hal ini dapat menyebabkan kesalahan baik pada sisi aplikasi Anda maupun pada sisi perpustakaan yang Anda gunakan.
  6. Meningkatkan konektivitas antara berbagai bagian sistem yang menggunakan variabel global. Sebaliknya, Anda harus mengupayakan penggabungan kode yang longgar. Lebih baik memiliki banyak subsistem kecil yang terhubung secara longgar satu sama lain daripada memiliki satu subsistem yang besar dan kuat. Karena otak lebih mudah menangani beberapa hal sederhana dibandingkan dengan satu hal yang terlalu rumit dan membingungkan.
  7. Penulisan pengujian unit menjadi lebih sulit karena pengujian tersebut tidak mengetahui variabel global mana yang diperlukan dan bagaimana inisialisasinya.
  8. Dalam aplikasi multithread, penggunaan variabel global oleh thread yang berbeda menyebabkan peningkatan kesalahan yang sulit untuk di-debug dan peningkatan kompleksitas proyek. Oleh karena itu, akses ke variabel-variabel tersebut perlu dikonfigurasi dengan lebih tepat, melengkapinya dengan sinkronisasi dan kunci. Hal ini dapat menyebabkan korsleting di kemudian hari. Misalnya, thread A telah mengunci variabel X untuk pekerjaannya, dan thread B telah mengunci variabel Y untuk pekerjaannya, dan thread A sekarang membutuhkan variabel Y, dan thread B membutuhkan variabel X. Akibatnya, program akan terhenti.
Tapi ini semua tidak akurat. Ini adalah deskripsi risiko, yang kemungkinannya meningkat seiring dengan pertumbuhan proyek dan jumlah variabel global di dalamnya yang meningkat. Mari beralih ke kelebihannya :
  1. Dalam proyek kecil, variabel global adalah hal paling sederhana untuk membuat proyek berhasil.
  2. Terkadang ketakutan dalam menggunakan variabel global menyebabkan proyek menjadi lebih rumit. Kemudian programmer mulai membuat singleton dan menggunakan pola desain lainnya.
  3. Dalam pemrograman, Anda sering kali harus mengandalkan beberapa nilai yang tidak dapat diubah.

    Hal yang paling masuk akal adalah menuliskan nilai-nilai tersebut sebagai konstanta, karena hanya konstanta yang menjamin bahwa nilai suatu variabel tidak akan berubah seiring waktu. Konstanta tersebut dapat ditemukan sepanjang waktu ( Integer.MAX_VALUE, Integer.MIN_VALUE, Boolean.TRUE, Collections.EMPTY_LISTdll.). Namun pemrograman tidak terbatas pada penggunaan perpustakaan standar. Sering kali Anda perlu menulis semacam logika unik, yang harus bergantung pada konstanta unik Anda sendiri. Itu sebabnya terkadang menggunakan konstanta (variabel global read-only) benar-benar membuat hidup lebih mudah.

Secara umum, Anda tidak boleh terlalu sering menggunakan variabel global; jika memungkinkan, gunakan hanya konstanta. Telah dikatakan sebelumnya bahwa menggunakan variabel global dalam proyek kecil tidaklah buruk. Namun lebih baik bagi pengembang pemula untuk tidak menggunakannya sama sekali. Karena dua alasan:
  1. Segala sesuatu yang ditulis oleh pengembang pemula pada dasarnya adalah sebuah proyek kecil. Dan penggunaan variabel global dalam proyeknya akan mengajarinya untuk menggunakan variabel global di mana pun.
  2. Lebih baik belajar dulu untuk melakukannya tanpa “trik terlarang”. Dan dengan pengalaman, pemahaman mengenai kapan waktu yang tepat untuk menggunakan teknik tersebut akan muncul dengan sendirinya.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION