Perangkap Keterbacaan
Pastikan expression mudah difahami.
Perangkap Keterbacaan ialah pelajaran Java Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Java Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Java Academy merangkumi sejumlah 4 pelajaran.
Kuasa Boleh Menjejaskan Kebolehbacaan
Ungkapan ternari adalah ringkas, tetapi penggunaan yang berlebihan boleh menjadikan kod sukar difahami.
Matlamatnya ialah kejelasan, bukan bilangan aksara yang paling sedikit. Baris yang tidak dapat difahami oleh pembaca sepintas lalu ialah ralat yang menunggu masa untuk berlaku.
Pelajaran ini membincangkan perangkap biasa dan cara mengelakkannya.
Perangkap: Penyusunan Bersarang yang Mendalam
Menyusun banyak ungkapan ternari pada satu baris menyukarkan pembacaan dan memudahkan kesilapan berlaku.
Setiap tahap tambahan menggandakan usaha mental yang diperlukan untuk menjejaki logik.
// hard to follow on one line
String g = s>=90?"A":s>=80?"B":s>=70?"C":s>=60?"D":"F";Pembetulan: Gunakan if/else if
Apabila terdapat banyak cabang, susunan if/else if lebih jelas berbanding rantai yang panjang.
Setiap syarat mempunyai barisnya sendiri dan mudah diperiksa serta dinyahpepijat.
String g;
if (s >= 90) g = "A";
else if (s >= 80) g = "B";
else if (s >= 70) g = "C";
else g = "F";Perangkap: Tanda Kurung yang Tiada
Mencampurkan ungkapan ternari dengan + tanpa tanda kurung mengubah maksudnya.
Oleh sebab + mempunyai keutamaan pengikatan yang lebih tinggi daripada ?:, penggabungan itu boleh menyerap sebahagian daripada syarat atau nilai anda.
int n = 5;
// surprising: + groups before ?:
String out = "n is " + n > 3 ? "big" : "small"; // does NOT compile as intendedPembetulan: Kelilingi Ungkapan Ternari
Sentiasa letakkan tanda kurung pada ungkapan ternari yang digunakan dalam penggabungan rentetan.
Ini menjadikan sempadannya jelas dan memberikan hasil yang anda jangkakan.
public class Main {
public static void main(String[] args) {
int n = 5;
String out = "n is " + (n > 3 ? "big" : "small");
System.out.println(out);
}
}Perangkap: Kesan Sampingan di Dalamnya
Meletakkan panggilan kaedah yang mempunyai kesan sampingan dalam kedua-dua cabang menyembunyikan perkara yang akan dijalankan.
Sepintas lalu, tidak jelas panggilan yang akan dilaksanakan, sedangkan hanya satu cabang akan berbuat demikian.
Utamakan if/else apabila tindakan adalah penting.
// unclear which side effect happens
boolean ok = check();
int r = ok ? save() : rollback();Perangkap: Nilai Cabang yang Panjang
Apabila nilai benar atau palsu ialah ungkapan yang panjang, ungkapan ternari menjadi dinding teks.
Asingkan subungkapan yang kompleks ke dalam pemboleh ubah bernama terlebih dahulu, kemudian gunakan ungkapan ternari yang ringkas.
// cramped
double total = vip ? base*0.8 + tax + ship - coupon : base + tax + ship;Pembetulan: Namakan Nilai Perantaraan
Mengasingkan jumlah kecil menjadikan pilihan itu jelas dan menerangkan maksudnya sendiri.
Ungkapan ternari itu kini boleh dibaca seperti bahasa biasa.
public class Main {
public static void main(String[] args) {
boolean vip = true;
double regular = 100.0, discounted = 80.0;
double total = vip ? discounted : regular;
System.out.println(total);
}
}Perangkap: Kelewahan Nilai Benar atau Palsu
Menulis flag ? true : false tidak diperlukan; syarat itu sendiri sudah merupakan nilai benar atau palsu.
Gunakan syarat itu secara langsung. Begitu juga, flag ? false : true hanyalah !flag.
boolean active = user != null;
// not: user != null ? true : false
boolean inactive = user == null;Formatkan Ungkapan Ternari Berbilang Baris
Jika ungkapan ternari perlu dikekalkan, pemformatan dapat membantu. Letakkan ? dan : pada permulaan baris dan jajarkannya.
Ini mengubah rantai tersebut menjadi susunan syarat yang mudah dibaca.
String tier = points >= 1000 ? "gold"
: points >= 500 ? "silver"
: "bronze";Senarai Semak Kebolehbacaan
Sebelum menetapkan ungkapan ternari, tanyakan: Adakah ini satu pilihan mudah? Adakah jenisnya serasi? Adakah tanda kurungnya jelas?
Jika mana-mana jawapan ialah tidak, utamakan if/else atau asingkan pemboleh ubah. Kod yang mudah dibaca lebih baik daripada kod yang cuba kelihatan bijak.
Semakan Pantas
Kenal pasti penulisan semula yang lebih kemas.
Ringkasan
Ungkapan ternari hanya membantu apabila kekal ringkas. Elakkan penyusunan bersarang yang mendalam, tanda kurung yang tiada, kesan sampingan dan kelewahan nilai benar atau palsu.
Asingkan nilai yang kompleks ke dalam pemboleh ubah bernama dan formatkan rantai yang panjang sebagai susunan syarat.
Apabila ragu-ragu, pilih bentuk yang paling jelas dibaca.
Pelajari Java dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 104
- Pelajaran
- 374
Soalan Lazim
Adakah pelajaran “Perangkap Keterbacaan” percuma?
Ya — teks penuh “Perangkap Keterbacaan” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Java Academy, tingkat taraf kepada CoddyKit PRO. Kursus Java Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Perangkap Keterbacaan”?
Pastikan expression mudah difahami. Anda berlatih Java Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Java Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Java Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.
Berapa lamakah pelajaran “Perangkap Keterbacaan” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Java Academy ini?
Ya. Setiap pelajaran Java Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Operator Ternari
- Menyarang Ternari
- Ternari berbanding if/else
- Perangkap Keterbacaan