JavaRush /Blog Java /Random-MS /Syarat Yoda
MAX
Tahap
Киров

Syarat Yoda

Diterbitkan dalam kumpulan
Catatan pendek didedikasikan kepada semua peminat Star Wars dan Java / JavaRush sempena ulang tahun ke-40 keluaran Episod V saga bintang! Syarat Yoda - 1Kadang-kadang anda boleh menemui banyak perkara menarik di Internet, dan pada hari yang lain saya terjumpa amalan pengaturcaraan pada pandangan pertama yang agak lucu yang dipanggil syarat Yoda . Ringkasnya, syarat Yoda (juga notasi Yoda) ialah gaya pengaturcaraan di mana dua bahagian ungkapan perbandingan biasa dalam pernyataan bersyarat diterbalikkan:
if (5 == a) {
    // do something
}
Gaya ini boleh digunakan dalam bahasa dengan sintaks seperti C, selalunya dalam ungkapan dengan ifdan while.
if (0 == variable) {
    // do something
}

while (false == endingCondition) {
    // do something
}
Mengapa mengalihkan ungkapan malar ke sebelah kiri pengendali perbandingan? Mari kita anggap situasi hipotesis di mana, selepas menonton maraton kesemua sembilan enam bahagian Saga, kami, tanpa tidur, duduk untuk menulis beberapa kod untuk projek haiwan kesayangan kami dan menulis perkara berikut:
void checkNumber(int a)
{
    if (a = 13) // Здесь-то и появляется так называемый unexpected behavior!
    {
        printf("Number is 13");
    }
}
Dalam kes ini, setiap kali anda menjalankan program, anda akan menerima string Number is 13", tanpa mengira hujah yang dihantar аkepada kaedah checkNumber(int a). Ini bukan yang kami jangkakan! Ralat logik boleh berlaku agak kerap di kalangan pengaturcara baru (percayalah, saya TAHU). Tetapi pada peringkat penyusunan, kod seperti 13 = a akan menghasilkan ralat, yang pastinya kita tidak akan terlepas pandang, kerana nilai integer adalah pemalar dan, oleh itu, tidak boleh berubah (berubah menjadi "a"). Syarat Yoda - 1

Terdapat kebaikan dan keburukan untuk menggunakan syarat Yoda.

Bahagian Cahaya:

  1. Menghalang penugasan kepada pembolehubah apabila matlamat kita adalah perbandingan.

  2. Menyelesaikan masalah "Tingkah Laku Null" yang tidak selamat ( 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) ) { // Результат - Ложь
       /* не выполняется */
    }

Bahagian Gelap:

  1. Kebolehbacaan kod untuk orang yang akan melihat kod anda menjadi lebih kompleks, meningkatkan beban pada persepsi kod tersebut.
  2. Skop sempit, hanya perbandingan untuk kesamaan atau perbandingan dengan pemalar digunakan, menyemak nol.
  3. Ramai penyusun sudah "melihat" ralat seperti ini dan memberi amaran terlebih dahulu tentang kehadiran kemungkinan ralat.
Alternatif kepada notasi Yoda boleh menjadi ujian unit. Pada zaman Republik Lama, dikatakan bahawa melakukan ujian yang baik akan memastikan bahawa kod itu akan bebas daripada ralat dan hanya melakukan apa yang ditulis untuk dilakukan. Apakah amalan berguna yang anda tahu? Kongsi pengetahuan anda dalam komen! Dan juga tulis episod kegemaran anda! Dan semoga Angkatan bersama anda!
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION