Global üýtgeýjileri nädip döretmeli
Global üýtgeýjiler programmanyň islendik ýerinden girip bolýan üýtgeýjilerdir. Başgaça aýdylanda, olaryň gerimi tutuş programma. Java-da şeýle üýtgeýjini döretmek üçin jemgyýetçilik synpynda umumy statiki üýtgeýjini döretmeli:public class Example {
public static int a;
public static int b;
public static String str;
}
Üýtgeýjiler a
we b
- str
global boldy. Programmanyň içindäki beýleki synplardan gönüden-göni girip bileris:
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);
}
}
Usuly işletsek main
, aşakdaky çykyşy göreris:
4
5
Global String variable value
Global üýtgeýjileri 2 görnüşe bölmek bolar:
- redaktirläp boljak üýtgeýjiler;
- diňe okap bolýan üýtgeýjiler.
final
we üýtgeýjini kesgitläniňde oňa baha bellemeli:
public class Constants {
public static final double PI = 3.1415926535897932384626433832795;
public static final String HELLO_WORLD_STR = "Hello, World!";
}
Java atlandyryş konwensiýasyna laýyklykda, sözleriň aşaky harp bilen bölünip, baş harplar bilen ýazylmalydyr. Şeýlelik bilen, yzygiderlilik döretdik, indi olaryň gymmatlyklaryny üýtgedip bilmeris: Şeýle-de bolsa, olaryň gymmatlyklaryny okap bileris:
public class HelloWorld {
public static void main(String[] args) {
System.out.println(Constants.HELLO_WORLD_STR);
}
}
Netije:
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;
}
}
Netije:
Площадь круга с радиусом 10,000000=314,159265
Global üýtgeýänleri ulanmalymy?
Internetde köp makalalar bar, olaryň esasy habary: global üýtgeýänler erbet, erbet we aýylganç. Bu hakykatdanam? Her kim öz netijesini çykaryp biler ýaly, global üýtgeýänleriň oňaýly taraplaryny bermäge synanyşalyň. Zerur taraplaryndan başlalyň. Okalýan we redaktirläp boljak global üýtgeýänler bilen synpy bolan bir programmany göz öňüne getireliň. Wagtyň geçmegi bilen taslamadaky synplaryň sany, global üýtgeýänleri ýa-da başgaça aýdylanda, olara bagly bolan global üýtgeýänleriň we usullaryň sany artýar. Wagtyň geçmegi bilen her global üýtgeýji ulgamyň dürli böleklerinde dürli maksat bilen okalýar. Üýtgeýjiniň bahasy ulgamyň dürli ýerlerinde täzelenip bilner. Bu programma dünýäsiniň umumy keşbi has çylşyrymlaşýar we bu aşakdaky kemçiliklere sebäp bolýar :- Okalmagy peseldi we koda düşünmekde kynçylyk artdy.
- Kod saklamagyň çylşyrymlylygynyň ýokarlanmagy.
- Bir global üýtgeýjini üýtgetmek üçin üýtgeýjini ulgamyň beýleki bölekleri üçin nädogry baha goýmazlyk üçin tutuş kody seljermeli.
- Düzeltmek gaty kyn ýalňyşlaryň köpelmegi.
Geliň, global üýtgeýjini, obýektleriň toplumyny göz öňüne getireliň. Mysal üçin ulgamyň bir böleginde setirlere garaşylýar, ulgamyň başga bir böleginde bolsa ýüzýän nokatlaryň belgilerini ulanmak kararyna geldi. Her kimiň muňa düşünmek islemegi gaty ähtimal.
- Kodyňyzdaky global üýtgeýjileri, öz gezeginde global üýtgeýänleri ulanýan käbir kitaphanalary ulanýan bolsaňyz, üýtgeýän atlar birmeňzeş bolup biler. Bu, programmaňyzyň ýa-da ulanýan kitaphananyňyzyň tarapynda ýalňyşlyklara sebäp bolup biler.
- Global üýtgeýänleri ulanýan ulgamyň dürli bölekleriniň arasyndaky baglanyşygy ýokarlandyrýar. Munuň tersine, koduň boş birikdirilmegine çalyşmaly. Bir uly zat däl-de, köp kiçi kiçi ulgamlaryň biri-birine arkaýyn birikdirilmegi has gowudyr. Sebäbi beýni üçin gaty çylşyrymly we bulaşyk bir zat däl-de, birnäçe ýönekeý zatlar bilen iş salyşmak has aňsat.
- Bölüm synaglaryny ýazmak has kynlaşýar, sebäbi synag haýsy global üýtgeýänleriň zerurdygyny we nädip başlamalydygyny bilenok.
- Köp okalýan programmalarda global üýtgeýänleri dürli sapaklar bilen ulanmak, düzetmek kyn bolan ýalňyşlyklaryň köpelmegine we taslama çylşyrymlylygynyň ýokarlanmagyna getirýär. Şol sebäpli şeýle üýtgeýjilere girişi has dogry sazlamak, sinhronizasiýa we gulplar bilen enjamlaşdyrmak zerur. Bu geljekde gysga utgaşmalara sebäp bolup biler. Mysal üçin, A sapak işi üçin X üýtgeýjini gulplady, B sapagy bolsa Y üýtgeýjisini gulplady, A sapagy indi Y üýtgeýjä, B sapak bolsa X üýtgeýjä mätäç. Netijede programma doňup galar.
- Kiçi taslamalarda global üýtgeýjiler taslamanyň işlemegi üçin iň ýönekeý zat.
- Käwagt global üýtgeýänleri ulanmak gorkusy taslamada has çylşyrymlylyga sebäp bolýar. Soňra programmistler ýeketäk aýdymlary döredip, beýleki dizaýn nagyşlaryna ýüz tutup başlaýarlar.
- Programmirlemekde köplenç käbir üýtgewsiz gymmatlyklara bil baglamaly.
Iň amatly zat, hemişelik ýaly bahalary ýazmakdyr, sebäbi üýtgeýjiniň bahasynyň wagtyň geçmegi bilen üýtgemezligini diňe yzygiderlilik kepillendirýär. Şeýle yzygiderliligi hemişe tapyp bolýar ( ,,
Integer.MAX_VALUE
we ş.m. ). Emma programmirlemek adaty kitaphanalary ulanmak bilen çäklenmeýär. Köplenç özboluşly yzygiderliligiňize bil baglamaly özboluşly logika ýazmaly bolarsyňyz. Şonuň üçin käwagt yzygiderli (diňe okalýan global üýtgeýänler) ulanmak durmuşy aňsatlaşdyrýar.Integer.MIN_VALUE
Boolean.TRUE
Collections.EMPTY_LIST
- Täzelik döredijiniň ýazan zatlarynyň hemmesi aslynda kiçi taslama. Taslamalarynda global üýtgeýjileri ulanmak oňa global üýtgeýänleri hemme ýerde ulanmagy öwreder.
- Ilki bilen “gadagan hileler” etmezden öwrenmek has gowudyr. Tejribe bilen, şeýle usullary haçan ulanmalydygyna düşünmek özbaşdak ýüze çykar.
GO TO FULL VERSION