JavaRush /Java блогы /Random-KK /Java-дағы жаһандық айнымалылар: оларды қашан пайдалану ке...
Анзор Кармов
Деңгей
Санкт-Петербург

Java-дағы жаһандық айнымалылар: оларды қашан пайдалану керек?

Топта жарияланған
Сәлеметсіз бе! Бұл мақалада біз жаһандық айнымалылар, олардың декларациясы және орынды пайдалану мысалдары туралы айтатын боламыз. Шағын ескерту: біз жаһандық класс айнымалыларын, яғни кез келген бір сыныпта қол жеткізуге болатындарды қарастырмаймыз. Біз бүкіл қолданбаның ғаламдық айнымалылары туралы сөйлесетін боламыз - олар бүкіл қолданба ішінде қол жеткізуге болады. Java-дағы жаһандық айнымалылар: оларды қашан пайдалану керек?  - 1

Жаһандық айнымалыларды қалай жасауға болады

Жаһандық айнымалылар қолданбаның кез келген жерінен қол жеткізуге болатын айнымалылар. Басқаша айтқанда, олардың қолданылу аясы бүкіл қолданба болып табылады. Java-да осындай айнымалы мәнді жасау үшін жалпы сыныпта жалпы статикалық айнымалы мәнді жасау керек:
public class Example {
    public static int a;
    public static int b;
    public static String str;
}
a, bжәне - айнымалылары strжаһандық болды. Біз оларға қолданба ішіндегі басқа сыныптардан тікелей қол жеткізе аламыз:
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);
    }
}
Егер әдісті іске қоссақ main, келесі нәтижені көреміз:

4
5
Global String variable value
Ғаламдық айнымалыларды екі түрге бөлуге болады:
  • өңдеуге болатын айнымалылар;
  • тек оқуға болатын айнымалылар.
Соңғылары жаһандық тұрақтылар деп аталады. Жаһандық тұрақты мәнді жасау үшін айнымалыны finalанықтау кезінде айнымалыны жасап, оған мән беру керек:
public class Constants {

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

}
Java атау конвенциясына сәйкес, барлық тұрақтылар астын сызу таңбасымен сөздерді бөліп, бас әріппен аталу керек. Сонымен, біз тұрақтыларды жасадық, енді олардың мәндерін өзгерте алмаймыз: Java-дағы жаһандық айнымалылар: оларды қашан пайдалану керек?  - 2Дегенмен, олардың мәндерін оқи аламыз:
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println(Constants.HELLO_WORLD_STR);
    }
}
Қорытынды:

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;
    }
}
Қорытынды:

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

Жаһандық айнымалыларды пайдалану керек пе?

Интернетте көптеген мақалалар бар, олардың негізгі хабары мынада: жаһандық айнымалылар зұлым, жаман және қорқынышты. Шынымен солай ма? Әркім өз қорытындысын жасай алатындай жаһандық айнымалылардың жақсы және жаман жақтарын беруге тырысайық. Java-дағы жаһандық айнымалылар: оларды қашан пайдалану керек?  - 3Кемшіліктерден бастайық. Оқуға және өңдеуге болатын жаһандық айнымалылары бар класы бар қолданбаны елестетейік. Уақыт өте келе жобадағы сыныптар саны, жаһандық айнымалылар мен жаһандық айнымалыларды пайдаланатын әдістер саны, немесе басқаша айтқанда, оларға тәуелді болады. Уақыт өте келе әрбір жаһандық айнымалы жүйенің әртүрлі бөліктерінде әртүрлі мақсаттар үшін оқылады. Айнымалының мәні жүйенің әртүрлі бөліктерінде жаңартылуы мүмкін. Бұл қолданба әлемінің жалпы көрінісі айтарлықтай күрделене түседі және бұл келесі кемшіліктерге әкеледі :
  1. Оқылуы төмендетілді және codeты түсіну қиындады.
  2. Кодқа қызмет көрсетудің күрделілігі артты.
  3. Бір жаһандық айнымалыны өзгерту үшін айнымалыны жүйенің басқа бөліктері үшін жарамсыз мәнге орнатпау үшін бүкіл codeты талдау қажет.
  4. Түзету өте қиын қателердің көбеюі.

    Жаһандық айнымалыны, an objectілер массивін елестетейік. Жүйенің бір бөлігінде, мысалы, осы массивте жолдар күтіледі, ал жүйенің басқа бөлігінде біреу өзгермелі нүкте сандарын пайдалануды шешті. Мұны ешкім түсінгісі келмеуі екіталай.

  5. Кодыңызда жаһандық айнымалы мәндерді, сондай-ақ, өз кезегінде жаһандық айнымалыларды да пайдаланатын кейбір кітапханаларды пайдалансаңыз, айнымалы атаулары бірдей болуы мүмкін. Бұл қолданбаның жағында да, сіз пайдаланып жатқан кітапхананың жағында да қателерге әкелуі мүмкін.
  6. Жаһандық айнымалы мәндерді пайдаланатын жүйенің әртүрлі бөліктері арасындағы байланысты арттырады. Керісінше, сіз codeты бос байланыстыруға тырысуыңыз керек. Бір үлкен нәрсеге ие болғанша, бір-бірімен еркін байланысқан көптеген шағын ішкі жүйелердің болуы жақсы. Өйткені миға тым күрделі және түсініксіз нәрседен гөрі бірнеше қарапайым нәрселермен айналысу оңайырақ.
  7. Бірлік сынақтарын жазу қиынырақ болады, себебі сынақ қандай жаһандық айнымалылар қажет екенін және оларды қалай инициализациялау керектігін білмейді.
  8. Көп ағынды қолданбаларда әртүрлі ағындар арқылы жаһандық айнымалы мәндерді пайдалану жөндеу қиын болатын қателердің ұлғаюына және жобаның күрделілігінің артуына әкеледі. Осыған байланысты, мұндай айнымалыларға қол жеткізуді синхрондау және құлыптармен жабдықтай отырып, дұрыс конфигурациялау қажет. Бұл болашақта қысқа тұйықталуға әкелуі мүмкін. Мысалы, А ағыны жұмысы үшін X айнымалысын құлыптады, ал В ағыны жұмысы үшін Y айнымалысын құлыптады, ал А ағыны енді Y айнымалысын, ал В ағыны X айнымалысын қажет етеді. Нәтижесінде бағдарлама ілулі болады.
Бірақ мұның бәрі дұрыс емес. Бұл тәуекелдердің сипаттамасы, олардың ықтималдығы жобаның өсуіне және ондағы жаһандық айнымалылар санының өсуіне қарай артады. Артықшылықтарға көшейік :
  1. Шағын жобаларда жаһандық айнымалылар жобаны жұмыс істеуге мүмкіндік беретін ең қарапайым нәрсе.
  2. Кейде жаһандық айнымалыларды пайдалану қорқынышы жобаның одан да күрделілігіне әкеледі. Содан кейін бағдарламашылар синглтондарды жасай бастайды және басқа дизайн үлгілеріне жүгінеді.
  3. Бағдарламалауда жиі кейбір өзгермейтін мәндерге сүйену керек.

    Ең ақылға қонымды нәрсе - мұндай мәндерді тұрақты ретінде жазу, өйткені тек тұрақтылар айнымалы мәннің уақыт өте келе өзгермейтініне кепілдік береді. Мұндай тұрақтыларды барлық уақытта табуға болады ( Integer.MAX_VALUE, Integer.MIN_VALUE, Boolean.TRUE, Collections.EMPTY_LISTт.б.). Бірақ бағдарламалау стандартты кітапханаларды пайдаланумен шектелмейді. Сізге өзіңіздің бірегей тұрақты мәндеріңізге сүйену қажет болатын қандай да бір бірегей логиканы жазу қажет болады. Сондықтан кейде тұрақты мәндерді (тек оқуға арналған жаһандық айнымалылар) пайдалану өмірді шынымен жеңілдетеді.

Жалпы, жаһандық айнымалы мәндерді асыра пайдаланбау керек; мүмкін болса, тек тұрақты мәндерді пайдаланыңыз. Шағын жобаларда жаһандық айнымалы мәндерді пайдалану жаман емес деп бұрын айтылған болатын. Бірақ жаңадан бастаған әзірлеуші ​​оларды мүлде қолданбағаны жақсы. Екі себеп бойынша:
  1. Жаңадан әзірлеуші ​​​​жазғанның бәрі негізінен шағын жоба. Және оның жобаларында жаһандық айнымалы мәндерді пайдалану оны барлық жерде жаһандық айнымалыларды қолдануға үйретеді.
  2. Алдымен «тыйым салынған трюктарсыз» істеуді үйренген дұрыс. Тәжірибеге сүйене отырып, мұндай әдістерді қашан қолдану орынды екенін түсіну өздігінен пайда болады.
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION