JavaRush /Java Blog /Random-ID /Operator ternary di Jawa

Operator ternary di Jawa

Dipublikasikan di grup Random-ID
Halo! Kuliah hari ini tidak akan terlalu panjang, tapi pasti bermanfaat :) Kita akan membahas tentang apa yang disebut operator ternary . Operator terner - 1“Ternary” berarti “tiga kali lipat”. Ini adalah alternatif dari operator kondisional if-elseyang sudah Anda kenal. Mari kita beri contoh. Katakanlah seseorang memutuskan pergi ke bioskop untuk menonton film dengan rating 18+. Penjaga memeriksa usianya di pintu masuk: jika dia memenuhi batas usia, dia mengizinkannya memasuki aula; jika tidak, dia menyuruhnya pulang. Mari buat kelas Mandan periksa dengan 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);

   }
}
Keluaran konsol:

"Все в порядке, проходите!"
Jika kami menghapus output ke konsol, pengujian kami akan terlihat seperti ini:
if (man.getAge() >= 18) {
           securityAnswer = "It's all right, come in!";
       } else {
           securityAnswer = "This movie is not suitable for your age!";
       }
Faktanya, logika sederhana berfungsi di sini: satu kondisi dicentang (usia >= 18). Tergantung pada hal ini, securityAnswersalah satu dari dua baris dengan respon penjaga ditugaskan ke variabel. Situasi seperti itu, "satu syarat - dua kemungkinan hasil", sangat sering terjadi dalam pemrograman. Oleh karena itu, operator ternary yang sama diciptakan untuk mereka. Dengannya, kami dapat menyederhanakan verifikasi menjadi satu baris kode:
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);

}
Seperti inilah cara kerja operator ini. Disebut ternary (triple) karena 3 komponen ikut serta dalam kerjanya:
  • Satu syarat ( man.getAge() >= 18)
  • Dua kemungkinan hasil ( "Tidak apa-apa, lanjutkan!" dan "Film ini tidak sesuai dengan usia Anda!" )
Pertama, suatu kondisi ditulis dalam kode, diikuti dengan tanda tanya.
man.getAge() >= 18 ?
“Apakah usia orang tersebut lebih dari atau sama dengan 18 tahun?” Berikut ini adalah hasil pertama. Ini diaktifkan jika kondisinya kembali true, yaitu benar:
String securityAnswer = man.getAge() >= 18 ? "It's all right, come in!"
Apakah usia orang tersebut lebih dari atau sama dengan 18 tahun? Jika ya, berikan securityAnswer nilai pada variabel “Semuanya baik-baik saja, masuk!” . Ini diikuti oleh :operator “ ”, setelah itu hasil kedua ditulis. Ini menyala jika kondisinya kembali false, yaitu salah:
String securityAnswer = man.getAge() >= 18 ? "It's all right, come in!" : "This movie is not suitable for your age!";
Apakah usia orang tersebut lebih dari atau sama dengan 18 tahun? Jika ya, berikan securityAnswer nilai pada variabel “Semuanya baik-baik saja, masuk!” . securityAnswer Jika tidak, berikan nilai pada variabel “Film ini tidak sesuai dengan usia Anda!” Seperti inilah logika umum dari operator ternary. kondisi ? hasil 1 : hasil 2 Operator terner - 2Omong-omong, kondisi ini tidak perlu diberi tanda kurung: kami melakukan ini agar lebih mudah dibaca. Ini akan berhasil tanpa mereka:
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);

}
Apa yang harus Anda gunakan: if-else, atau operator ternary? Dari segi performa tidak banyak perbedaan. Lebih tepatnya, mungkin ada, tapi tidak signifikan. Di sini pertanyaannya lebih berkaitan dengan keterbacaan kode Anda. Hal ini sangat penting dalam pemrograman: kode yang Anda tulis tidak hanya harus berfungsi dengan benar, tetapi juga mudah dibaca. Toh bisa “diwariskan” ke programmer lain, rekan-rekan Anda! Dan jika sulit untuk dipahami, itu akan mempersulit pekerjaan mereka dan Anda - mereka akan mendatangi Anda untuk meminta penjelasan setiap 5 menit. Rekomendasi umum mungkin terdengar seperti ini: jika kondisinya sederhana dan mudah diperiksa, Anda dapat menggunakan operator ternary tanpa membahayakan. Dengan cara ini Anda akan mengurangi jumlah kode dan jumlah cek if-else, yang mungkin sudah banyak. Namun jika kondisinya rumit dan bertingkat, lebih baik digunakan if-else. Misalnya, dalam kasus ini, menggunakan operator ternary adalah ide yang buruk:
String securityAnswer = (man.getAge() >= 18 && (man.hasTicket() || man.hasCoupon()) && !man.hasChild())  ? "Come in!" : "You can not pass!";
Jadi Anda tidak akan langsung mengerti apa yang terjadi di sini! Kode menjadi sangat sulit dibaca. Dan semua itu karena kondisi yang sulit:
  • Jika seseorang berusia di atas atau sama dengan 18 tahun + memiliki tiket (atau memiliki kupon tiket masuk gratis) + tidak membawa anak kecil - maka mereka dapat lewat.
  • Jika setidaknya satu bagian dari kondisi menghasilkan nilai salah, maka kondisi tersebut tidak bisa.
Di sinilah jelas akan lebih baik untuk digunakan if-else. Ya, kode kita akan berukuran lebih besar, tetapi akan jauh lebih mudah dibaca. Dan tidak ada kolega Anda yang akan terkejut jika mereka mewarisi kode seperti itu :) Akhirnya, saya dapat merekomendasikan buku tersebut kepada Anda. Dalam kuliah tersebut kita menyentuh topik keterbacaan kode. Buku klasik “Clean Code” oleh Robert Martin didedikasikan untuknya. Operator terner - 3Ini berisi praktik terbaik dan rekomendasi untuk pemrogram yang memungkinkan Anda menulis tidak hanya kode yang berfungsi, tetapi juga kode yang mudah dibaca. Ada review buku ini di JavaRush.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION