Ini adalah hal yang saya lakukan banyak akhir-akhir ini.
Contoh:
setCircle(circle, i, { current }) {
if (i == current) {
circle.src = 'images/25CE.svg'
circle.alt = 'Now picking'
} else if (i < current) {
circle.src = 'images/25C9.svg'
circle.alt = 'Pick failed'
} else if (i > current) {
circle.src = 'images/25CB.svg'
circle.alt = 'Pick chance'
}
}
Seringkali jika / jika tangga secara signifikan lebih rumit daripada ini ...
Lihat klausa terakhir? Itu berlebihan. Tangga pada akhirnya seharusnya menangkap semua kondisi yang memungkinkan. Jadi bisa ditulis ulang seperti itu:
setCircle(circle, i, { current }) {
if (i == current) {
circle.src = 'images/25CE.svg'
circle.alt = 'Now picking'
} else if (i < current) {
circle.src = 'images/25C9.svg'
circle.alt = 'Pick failed'
} else {
circle.src = 'images/25CB.svg'
circle.alt = 'Pick chance'
}
}
Ini adalah bagaimana saya biasa menulis kode, tapi saya tidak suka gaya ini. Keluhan saya adalah kondisi di mana bagian terakhir dari kode akan dieksekusi tidak jelas dari kode. Saya kemudian mulai menulis kondisi ini secara eksplisit untuk membuatnya lebih jelas.
Namun:
- Secara eksplisit menulis kondisi akhir yang lengkap adalah ide saya sendiri, dan saya memiliki pengalaman buruk dengan ide-ide saya sendiri - biasanya orang-orang meneriaki saya tentang betapa mengerikannya apa yang saya lakukan - dan (kadang-kadang banyak) kemudian saya mengetahui bahwa itu memang suboptimal;
- Satu petunjuk mengapa ini mungkin ide yang buruk: Tidak berlaku untuk Javascript, tetapi dalam bahasa lain, kompiler cenderung mengeluarkan peringatan atau bahkan kesalahan tentang kontrol yang mencapai akhir fungsi. Memberitahu melakukan sesuatu seperti itu mungkin tidak terlalu populer atau saya salah melakukannya.
- Keluhan kompiler membuat saya kadang-kadang menulis kondisi terakhir dalam komentar, tapi saya kira melakukan itu mengerikan karena komentar, tidak seperti kode, tidak berpengaruh pada semantik program yang sebenarnya:
} else { // i > current
circle.src = 'images/25CB.svg'
circle.alt = 'Pick chance'
}
Apakah saya melewatkan sesuatu? Atau apakah boleh melakukan apa yang saya uraikan atau itu ide yang buruk?