CodeGym /Java Blog /Acak /Operator terner
John Squirrels
Level 41
San Francisco

Operator terner

Dipublikasikan di grup Acak
Hai! Pelajaran hari ini tidak akan lama, tapi pasti akan berguna :) Kita akan berbicara tentang apa yang disebut operator ternary . Operator ternary - 1Ternary berarti " terdiri dari tiga bagian ". Ini adalah alternatif untuk if-elsepernyataan aliran kontrol yang sudah Anda temui. Mari kita beri contoh. Misalkan seseorang memutuskan untuk menonton film dengan rating R (di bawah 17 tahun membutuhkan pendamping orang tua atau wali dewasa). Penerima tamu memeriksa usianya di pintu: jika dia lulus pemeriksaan usia, dia diizinkan masuk; jika tidak, dia dipulangkan. Mari mendeklarasikan Personkelas dan memeriksanya menggunakan if-elsepernyataan:

public class Person {

   private int age;

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

   public int getAge() {
       return age;
   }

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

   public static void main(String[] args) {

       Person person = new Person(22);

       String usherResponse;

       if (person.getAge() >= 18) {
           usherResponse = "Everything is in order. Come in!";
       } else {
           usherResponse = "This film is not suitable for your age!";
       }

       System.out.println(usherResponse);

   }
}
Keluaran konsol:

"Everything is in order. Come in!"
Jika kami menghapus keluaran konsol, maka pemeriksaan kami terlihat seperti ini:

if (person.getAge() >= 18) {
           usherResponse = "Everything is in order. Come in!";
       } else {
           usherResponse = "This film is not suitable for your age!";
       }
Logikanya sangat sederhana di sini: satu kondisi diperiksa (umur >= 18) Berdasarkan hasil, variabel usherResponsediberi salah satu dari dua string dengan respons penerima tamu. Situasi seperti itu ("satu syarat - dua hasil yang mungkin") sangat umum dalam pemrograman. Dan itulah mengapa operator ternary dibuat. Kita dapat menggunakannya untuk menyederhanakan pemeriksaan kita menjadi satu baris kode:

public static void main(String[] args) {

   Person person = new Person(22);

   String usherResponse = (person.getAge() > 18) ? "Everything is in order. Come in!" : "This film is not suitable for your age!";

   System.out.println(usherResponse);

}
Begini cara kerja operator ini. Disebut operator ternary, karena melibatkan 3 komponen:
  • Satu syarat ( person.getAge() > 18)
  • Dua kemungkinan hasil ( "Semuanya beres. Masuk!" dan "Film ini tidak cocok untuk usia Anda!" )
Pertama, kami menulis kondisinya, diikuti dengan tanda tanya.

person.getAge() > 18 ?
"Apakah usia orang ini lebih dari 18?" Kemudian kita menulis nilai pertama . Nilai ini digunakan jika kondisi bernilaitrue :

String usherResponse = person.getAge() > 18 ? "Everything is in order. Come in!"
Apakah usia orang ini lebih dari 18? Jika ya, setel usherResponse variabel ke "Semuanya beres. Masuk!" Berikutnya adalah simbol " :" dan nilai kedua . Nilai ini digunakan jika kondisi bernilaifalse :

String usherResponse = person.getAge() > 18 ? "Everything is in order. Come in!" : "This film is not suitable for your age!";
Apakah usia orang ini lebih dari 18? Jika ya, setel usherResponse variabel ke "Semuanya beres. Masuk!" . Jika tidak, setel usherResponse variabel ke "Film ini tidak cocok untuk usia Anda!" Secara umum, seperti inilah logika operator ternary. kondisi ? hasil 1 : hasil 2 Operator ternary - 2 Omong-omong, tanda kurung di sekitar kondisi tidak diperlukan: kami menambahkannya agar lebih mudah dibaca. Ini juga berfungsi tanpa mereka:

public static void main(String[] args) {

   Person person = new Person(22);

   String usherResponse = person.getAge() > 18 ? "Everything is in order. Come in!" : "This film is not suitable for your age!";

   System.out.println(usherResponse);

}
Jadi apa yang harus Anda gunakan? Pernyataan if-elseatau operator ternary? Dari segi performa, tidak ada perbedaan. Lebih tepatnya, mungkin ada, tapi tidak signifikan. Pertimbangan terbesar di sini adalah keterbacaan kode Anda. Kode yang Anda tulis tidak hanya berfungsi dengan benar, tetapi juga mudah dibaca . Lagi pula, itu mungkin "diwarisi" oleh programmer lain, kolega Anda! Jika sulit untuk dipahami, itu akan mempersulit pekerjaan mereka, dan pekerjaan Anda (mereka akan mendatangi Anda untuk penjelasan setiap 5 menit). Rekomendasi umumnya adalah ini: jika kondisinya sederhana dan mudah diverifikasi, Anda dapat menggunakan operator ternary tanpa membahayakan. Ini memungkinkan Anda mengurangi jumlah kode dan jumlahif-elsepernyataan (dan mungkin sudah ada banyak). Namun jika kondisinya rumit dan melibatkan banyak langkah, lebih baik gunakan pernyataan if-else. Misalnya, menggunakan operator ternary merupakan ide yang buruk dalam hal ini:

String usherResponse = (person.getAge() > 18 && (person.hasTicket() || person.hasCoupon()) && !person.hasChild()) ? "Come in!" : "You can't come in!";
Tidak segera terlihat apa yang terjadi di sini! Kode menjadi sangat sulit dibaca. Dan semua karena kondisi yang rumit:
  • Jika seseorang berusia lebih dari 18 tahun, memiliki tiket (atau izin masuk gratis), dan tidak memiliki anak kecil, dia dapat masuk.
  • Jika satu bagian saja dari kondisinya salah, maka dia tidak bisa.
Di sini jelas lebih baik menggunakan if-else. Ya, kode kita akan lebih besar, tetapi akan jauh lebih mudah dibaca. Dan kolega Anda tidak akan menghadapi telapak tangan jika mereka mewarisi kode ini :) Akhirnya, saya dapat merekomendasikan yang baik untuk Anda. Kami menyentuh keterbacaan kode selama pelajaran. Buku Robert Martin "Kode Bersih", yang telah menjadi buku klasik, didedikasikan untuk topik ini. Operator ternary - 4Ini menyatukan praktik terbaik dan rekomendasi untuk pemrogram, yang akan membantu Anda menulis kode yang tidak hanya berfungsi, tetapi juga mudah dibaca.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION