JavaRush /Java Blog /Random-ID /Kondisi Yoda
MAX
Level 16
Киров

Kondisi Yoda

Dipublikasikan di grup Random-ID
Sebuah postingan singkat didedikasikan untuk semua penggemar Star Wars dan Java / JavaRush untuk memperingati 40 tahun rilis Episode V dari saga bintang! Kondisi Yoda - 1Kadang-kadang Anda dapat menemukan banyak hal menarik di Internet, dan suatu hari saya menemukan praktik pemrograman yang sekilas lucu yang disebut kondisi Yoda . Singkatnya, kondisi Yoda (juga notasi Yoda) adalah gaya pemrograman di mana dua bagian dari ekspresi perbandingan yang lazim dalam pernyataan kondisional dibalik:
if (5 == a) {
    // do something
}
Gaya ini dapat digunakan dalam bahasa dengan sintaks mirip C, paling sering dalam ekspresi dengan ifdan while.
if (0 == variable) {
    // do something
}

while (false == endingCondition) {
    // do something
}
Mengapa menggeser ekspresi konstanta ke sisi kiri operator perbandingan? Mari kita asumsikan situasi hipotetis di mana, setelah menonton sembilan enam bagian Saga secara maraton, kita, tanpa tidur, duduk untuk menulis beberapa kode untuk proyek kesayangan kita dan menulis yang berikut:
void checkNumber(int a)
{
    if (a = 13) // Здесь-то и появляется так называемый unexpected behavior!
    {
        printf("Number is 13");
    }
}
Dalam hal ini, setiap kali Anda menjalankan program, Anda akan menerima string Number is 13", terlepas dari argumen yang diteruskan аke metode tersebut checkNumber(int a). Ini bukan yang kami harapkan! Kesalahan logika cukup sering terjadi di kalangan programmer pemula (percayalah, saya TAHU). Namun pada tahap kompilasi, kode seperti 13 = a akan menghasilkan error yang tentunya tidak akan kita abaikan, karena nilai integer adalah konstanta dan karenanya tidak dapat berubah (berubah menjadi “a”). Kondisi Yoda - 1

Ada pro dan kontra dalam menggunakan kondisi Yoda.

Sisi Terang:

  1. Mencegah penugasan ke suatu variabel ketika tujuan kita adalah perbandingan.

  2. Menyelesaikan masalah "Perilaku Null" yang tidak aman ( NullPointerException) // contoh dari Wikipedia

  3. Tanpa Yoda:

    String myString = null;
    if (myString.equals("foobar")) { /* ... */ }
    // This causes a NullPointerException in Java

    Dengan Yoda:

    String myString = null;
    if ( "foobar".equals(myString) ) { // Результат - Ложь
       /* не выполняется */
    }

Sisi gelap:

  1. Keterbacaan kode bagi orang-orang yang akan melihat kode Anda menjadi lebih kompleks, sehingga meningkatkan beban persepsi kode.
  2. Cakupan sempit, hanya perbandingan untuk kesetaraan atau perbandingan dengan konstanta yang digunakan, memeriksa nol.
  3. Banyak kompiler sudah “melihat” kesalahan semacam ini dan memperingatkan sebelumnya tentang adanya potensi kesalahan.
Alternatif untuk notasi Yoda dapat berupa pengujian unit. Pada zaman Republik Lama, dikatakan bahwa melakukan pengujian yang baik akan memastikan bahwa kode tersebut bebas dari kesalahan dan hanya melakukan apa yang seharusnya dilakukan. Praktik bermanfaat apa yang Anda ketahui? Bagikan pengetahuan Anda di komentar! Dan juga tulis episode favorit Anda! Dan semoga the Force menyertai Anda!
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION