JavaRush /Java Blog /Random-TL /Mga Global Variable sa Java: Kailan Gagamitin ang mga Ito...
Анзор Кармов
Antas
Санкт-Петербург

Mga Global Variable sa Java: Kailan Gagamitin ang mga Ito?

Nai-publish sa grupo
Kamusta! Sa artikulong ito ay pag-uusapan natin ang tungkol sa mga pandaigdigang variable, ang kanilang deklarasyon at mga halimbawa ng naaangkop na paggamit. Isang maliit na tala: hindi namin isasaalang-alang ang mga global na variable ng klase, iyon ay, ang mga maaaring ma-access sa loob ng anumang isang klase. Pag-uusapan natin ang tungkol sa mga pandaigdigang variable ng buong application - ang mga maaaring ma-access sa loob ng buong application. Mga Global Variable sa Java: Kailan Gagamitin ang mga Ito?  - 1

Paano lumikha ng mga pandaigdigang variable

Ang mga global variable ay mga variable na naa-access mula saanman sa application. Sa madaling salita, ang kanilang saklaw ay ang buong aplikasyon. Upang lumikha ng ganoong variable sa Java, kailangan mong lumikha ng pampublikong static na variable sa isang pampublikong klase:
public class Example {
    public static int a;
    public static int b;
    public static String str;
}
Ang mga variable a, bat str- ay naging pandaigdigan. Maaari naming ma-access ang mga ito nang direkta mula sa iba pang mga klase sa loob ng application:
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);
    }
}
Kung patakbuhin natin ang method main, makikita natin ang sumusunod na output:

4
5
Global String variable value
Ang mga pandaigdigang variable ay maaaring nahahati sa 2 uri:
  • mga variable na maaaring i-edit;
  • mga variable na mababasa lamang.
Ang huli ay tinatawag na global constants. Upang makalikha ng global constant, kailangan mong gumawa ng variable finalat magtalaga ng value dito kapag tinutukoy ang variable:
public class Constants {

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

}
Ayon sa Java name convention, ang lahat ng constants ay dapat na pinangalanan sa upper case, na naghihiwalay sa mga salita na may underscore na character. Kaya, lumikha kami ng mga constant, at ngayon ay hindi na namin mababago ang kanilang mga halaga: Mga Global Variable sa Java: Kailan Gagamitin ang mga Ito?  - 2Gayunpaman, maaari naming basahin ang kanilang mga halaga:
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println(Constants.HELLO_WORLD_STR);
    }
}
Konklusyon:

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

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

Dapat mo bang gamitin ang mga global variable?

Mayroong maraming mga artikulo sa Internet, ang pangunahing mensahe nito ay ito: ang mga pandaigdigang variable ay masama, masama at kakila-kilabot. Talaga ba? Subukan nating ibigay ang mga kalamangan at kahinaan ng mga pandaigdigang variable upang ang lahat ay makagawa ng kanilang sariling konklusyon. Mga Global Variable sa Java: Kailan Gagamitin ang mga Ito?  - 3Magsimula tayo sa mga kahinaan. Isipin natin ang isang application na may klase na may mga global na variable na maaaring basahin at i-edit. Sa paglipas ng panahon, ang bilang ng mga klase sa proyekto, ang bilang ng mga pandaigdigang variable at mga pamamaraan na gumagamit ng mga pandaigdigang variable, o sa madaling salita, ay nakasalalay sa kanila. Sa paglipas ng panahon, ang bawat global variable ay binabasa sa iba't ibang bahagi ng system para sa iba't ibang layunin. Maaaring ma-update ang halaga ng isang variable sa iba't ibang bahagi ng system. Ang pangkalahatang larawan ng mundo ng application na ito ay nagiging mas kumplikado, at ito ay humahantong sa mga sumusunod na disadvantages :
  1. Nabawasan ang pagiging madaling mabasa at nadagdagan ang kahirapan sa pag-unawa ng code.
  2. Tumaas na pagiging kumplikado ng pagpapanatili ng code.
  3. Upang baguhin ang isang pandaigdigang variable, kinakailangang suriin ang buong code upang hindi maitakda ang variable sa isang halaga na hindi wasto para sa iba pang bahagi ng system.
  4. Dagdagan ang mga error na napakahirap i-debug.

    Isipin natin ang isang pandaigdigang variable, isang hanay ng mga bagay. Sa isang bahagi ng system, halimbawa, inaasahan ang mga string sa array na ito, at sa ibang bahagi ng system, may nagpasya na gumamit ng mga floating point na numero. Ito ay malamang na walang sinuman ang nais na maunawaan ito.

  5. Maaaring pareho ang mga pangalan ng variable kung gagamit ka ng mga global variable sa iyong code, pati na rin ang ilang library na gumagamit din ng mga global variable. Maaari itong humantong sa mga error kapwa sa gilid ng iyong application at sa gilid ng library na iyong ginagamit.
  6. Pinapataas ang koneksyon sa pagitan ng iba't ibang bahagi ng system na gumagamit ng mga global variable. Sa kabaligtaran, dapat kang magsikap para sa maluwag na pagkabit ng code. Mas mainam na magkaroon ng maraming maliliit na subsystem na maluwag na konektado sa isa't isa kaysa magkaroon ng isang mabigat na bagay. Dahil mas madali para sa utak na harapin ang ilang simpleng bagay kaysa sa isang napakasalimuot at nakakalito na bagay.
  7. Nagiging mas mahirap ang pagsulat ng mga unit test dahil hindi alam ng pagsubok kung aling mga global variable ang kailangan at kung paano sila kailangang masimulan.
  8. Sa mga multithreaded na application, ang paggamit ng mga global variable ng iba't ibang thread ay humahantong sa pagtaas ng mga error na mahirap i-debug at sa pagtaas ng pagiging kumplikado ng proyekto. Dahil dito, kinakailangan na i-configure ang pag-access sa mga naturang variable nang mas tama, na nagbibigay sa kanila ng mga pag-synchronize at mga kandado. Ito ay maaaring humantong sa mga short circuit sa hinaharap. Halimbawa, ni-lock ng thread A ang variable X para sa trabaho nito, at ni-lock ng thread B ang variable Y para sa trabaho nito, at kailangan na ngayon ng thread A ang variable Y, at kailangan ng thread B ang variable X. Bilang resulta, mag-freeze ang program.
Ngunit ang lahat ng ito ay hindi tumpak. Ito ay isang paglalarawan ng mga panganib, ang posibilidad na tumaas sa paglaki ng proyekto at pagtaas ng bilang ng mga pandaigdigang variable sa loob nito. Lumipat tayo sa mga kalamangan :
  1. Sa maliliit na proyekto, ang mga pandaigdigang variable ay ang pinakasimpleng bagay upang magawa ang proyekto.
  2. Minsan ang takot sa paggamit ng mga pandaigdigang variable ay humahantong sa mas kumplikado sa proyekto. Pagkatapos ang mga programmer ay nagsimulang lumikha ng mga singleton at gumamit ng iba pang mga pattern ng disenyo.
  3. Sa programming, madalas kailangan mong umasa sa ilang mga hindi nababagong halaga.

    Ang pinaka-makatwirang bagay ay ang pagsulat ng mga naturang halaga bilang isang pare-pareho, dahil ang mga constant lamang ang ginagarantiya na ang halaga ng isang variable ay hindi magbabago sa paglipas ng panahon. Ang ganitong mga pare-pareho ay matatagpuan sa lahat ng oras ( Integer.MAX_VALUE, Integer.MIN_VALUE, Boolean.TRUE, Collections.EMPTY_LISTatbp.). Ngunit ang programming ay hindi limitado sa paggamit ng karaniwang mga aklatan. Madalas na nangyayari na kailangan mong magsulat ng ilang uri ng natatanging lohika, na kakailanganing umasa sa iyong sariling natatanging mga pare-pareho. Kaya naman minsan ang paggamit ng mga constants (read-only global variable) ay talagang nagpapadali sa buhay.

Sa pangkalahatan, hindi mo dapat gamitin nang labis ang mga global variable; kung maaari, gumamit lamang ng mga constant. Sinabi kanina na ang paggamit ng mga global variable sa maliliit na proyekto ay hindi masama. Ngunit mas mabuti para sa isang baguhan na developer na huwag gamitin ang mga ito. Sa dalawang dahilan:
  1. Ang lahat ng isinulat ng isang baguhang developer ay mahalagang isang maliit na proyekto. At ang paggamit ng mga global variable sa kanyang mga proyekto ay magtuturo sa kanya na gumamit ng mga global variable sa lahat ng dako.
  2. Mas mainam na matuto munang gumawa nang walang "ipinagbabawal na pandaraya". At sa karanasan, ang pag-unawa kung kailan angkop na gamitin ang mga ganitong pamamaraan ay darating sa sarili nitong.
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION