JavaRush /Java Blogu /Random-AZ /Java-da üçlü operator

Java-da üçlü operator

Qrupda dərc edilmişdir
Salam! Bugünkü mühazirə çox uzun olmayacaq, amma mütləq faydalı olacaq :) Biz sözdə üçlü operator haqqında danışacağıq . Üçlü operator - 1“Üçlük” “üçlü” deməkdir. if-elseBu , artıq tanış olduğunuz şərti operatora alternativdir . Bir misal verək. Tutaq ki, insan 18+ reytinqli filmə baxmaq üçün kinoya getməyə qərar verir. Mühafizəçi onun yaşını girişdə yoxlayır: yaş həddinə çatarsa ​​zala girməyə icazə verir, yoxsa evə göndərir. Gəlin bir sinif yaradaq Manvə onu yoxlayaq if-else:
public class Man {

   private int age;

   public Man(int age) {
       this.age = age;
   }

   public int getAge() {
       return age;
   }

   public void setAge(int age) {
       this.age = age;
   }

   public static void main(String[] args) {

       Man man = new Man(22);

       String securityAnswer;

       if (man.getAge() >= 18) {
           securityAnswer = "It's all right, come in!";
       } else {
           securityAnswer = "This movie is not suitable for your age!";
       }

       System.out.println(securityAnswer);

   }
}
Konsol çıxışı:

"Все в порядке, проходите!"
Çıxışı konsola çıxarsaq, testimiz belə görünür:
if (man.getAge() >= 18) {
           securityAnswer = "It's all right, come in!";
       } else {
           securityAnswer = "This movie is not suitable for your age!";
       }
Burada əslində sadə məntiq işləyir: bir şərt yoxlanılır (yaş >= 18). Bundan asılı olaraq, securityAnswermühafizəçinin cavabı olan iki sətirdən biri dəyişənə təyin edilir. "Bir şərt - iki mümkün nəticə" kimi hallar proqramlaşdırmada çox tez-tez baş verir. Buna görə də onlar üçün eyni üçlü operator yaradılmışdır. Bununla biz yoxlamamızı bir kod sətirinə sadələşdirə bilərik:
public static void main(String[] args) {

   Man man = new Man(22);

   String securityAnswer = (man.getAge() >= 18) ? "It's all right, come in!" : "This movie is not suitable for your age!";

   System.out.println(securityAnswer);

}
Bu operatorun işi belə görünür. Üçlü (üçlü) adlanır, çünki onun işində 3 komponent iştirak edir:
  • Bir şərt ( man.getAge() >= 18)
  • İki mümkün nəticə ( "Yaxşıdır, davam et!""Bu film sizin yaşınıza uyğun deyil!" )
Əvvəlcə kodda şərt yazılır, sonra sual işarəsi qoyulur.
man.getAge() >= 18 ?
"İnsanın yaşı 18-dən böyükdür, yoxsa ona bərabərdir?" Aşağıdakı ilk nəticədir. Şərt geri qayıdarsa true, yəni doğrudursa, işə salınır:
String securityAnswer = man.getAge() >= 18 ? "It's all right, come in!"
İnsanın yaşı 18-dən böyükdür, yoxsa ona bərabərdir? Əgər belədirsə, dəyişənə “Hər şey yaxşıdır, daxil olun!”securityAnswer dəyərini təyin edin. . Bunun ardınca “ :” operatoru gəlir, ondan sonra ikinci nəticə yazılır. Şərt geri qayıdarsa false, işə salınır, yəni yanlışdır:
String securityAnswer = man.getAge() >= 18 ? "It's all right, come in!" : "This movie is not suitable for your age!";
İnsanın yaşı 18-dən böyükdür, yoxsa ona bərabərdir? Əgər belədirsə, dəyişənə “Hər şey yaxşıdır, daxil olun!”securityAnswer dəyərini təyin edin. . Əgər yoxsa, dəyişənə “Bu film yaşınıza uyğun deyil!”securityAnswer dəyərini təyin edin. Üçlü operatorun ümumi məntiqi belə görünür. vəziyyət? nəticə 1 : nəticə 2 Üçlü operator - 2Yeri gəlmişkən, şərtin ətrafında mötərizələr qoymaq lazım deyil: biz bunu daha çox oxunaqlı olmaq üçün etdik. Onlarsız işləyəcək:
public static void main(String[] args) {

   Man man = new Man(22);

   String securityAnswer = man.getAge() >= 18 ? "It's all right, come in!" : "This movie is not suitable for your age!";

   System.out.println(securityAnswer);

}
Nə istifadə etməlisiniz: if-else, yoxsa üçlü operator? Performans baxımından çox da fərq yoxdur. Daha doğrusu, mövcud ola bilər, amma əhəmiyyətsizdir. Burada sual daha çox kodunuzun oxunaqlılığına aiddir. Proqramlaşdırmada son dərəcə vacibdir: yazdığınız kod yalnız düzgün işləməli deyil, həm də oxunması asan olmalıdır. Axı o, digər proqramçılara, həmkarlarınıza “miras” qala bilər! Əgər başa düşmək çətindirsə, bu, həm onların, həm də sizin işinizi çətinləşdirəcək - onlar hər 5 dəqiqədən bir izahat üçün sizə qaçacaqlar. Ümumi bir tövsiyə belə səslənə bilər: şərt sadədirsə və yoxlamaq asandırsa, üçlü operatordan zərər vermədən istifadə edə bilərsiniz. Bu yolla siz kodun miqdarını və çeklərin sayını azaldacaqsınız if-else, onlardan çoxu ola bilər. Ancaq vəziyyət mürəkkəb və çox mərhələlidirsə, istifadə etmək daha yaxşıdır if-else. Məsələn, bu halda üçlü operatordan istifadə etmək pis fikir olardı:
String securityAnswer = (man.getAge() >= 18 && (man.hasTicket() || man.hasCoupon()) && !man.hasChild())  ? "Come in!" : "You can not pass!";
Beləliklə, burada nə baş verdiyini dərhal başa düşməyəcəksiniz! Kodu oxumaq çox çətinləşdi. Və hamısı çətin vəziyyətə görə:
  • Əgər bir şəxs 18 yaşdan yuxarı və ya ona bərabərdirsə + bileti varsa (və ya pulsuz giriş kuponu varsa) + onlarla kiçik uşaqları yoxdursa - o zaman keçə bilərlər.
  • Əgər şərtin ən azı bir hissəsi yalnış qaytarırsa, bunu edə bilməz.
Burada istifadə etmək daha yaxşı olardı if-else. Bəli, kodumuz ölçü baxımından daha böyük olardı, lakin dəfələrlə daha oxunaqlı olardı. Həmkarlarınızdan heç biri belə kodu miras qoysa, başlarını tutmayacaq :) Nəhayət, sizə kitabı tövsiyə edə bilərəm. Mühazirədə kodun oxunması mövzusuna toxunduq. Robert Martinin klassik kitabı "Təmiz kod" ona həsr olunub. Üçlü operator - 3O, yalnız işləyən deyil, həm də asan oxunan kodu yazmağa imkan verəcək proqramçılar üçün ən yaxşı təcrübələri və tövsiyələri ehtiva edir. JavaRush-da bu kitabın icmalı var .
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION