Bendera Boolean dalam parameter fungsi boleh menjadikan kod anda lebih sukar dibaca dan diselenggara. Mari lihat sebab anda harus mengelakkannya dan perkara yang boleh anda lakukan.
Menggunakan parameter boolean selalunya bermakna fungsi anda melakukan dua perkara berbeza, melanggar Prinsip Tanggungjawab Tunggal (SRP). Berikut ialah contoh biasa:
function createFile(name, isTemp) { if (isTemp) { fs.create(`./temp/${name}`); } else { fs.create(name); } }
Ini mungkin kelihatan mudah, tetapi ia mempunyai beberapa masalah:
createFile("log.txt", true); // What does 'true' mean here?
Dua fungsi dalam satu: Boolean berfungsi seperti suis, menjadikan fungsi melakukan perkara yang berbeza
Pengujian semakin sukar: Anda perlu menyemak kedua-dua cara fungsi boleh berfungsi
Sukar untuk menambah ciri: Jika anda memerlukan pilihan ketiga kemudian, anda mungkin menambah boolean lain, memburukkan keadaan
Pahasi fungsi kepada dua fungsi yang berasingan, setiap satu melakukan satu perkara:
function createFile(name) { fs.create(name); } function createTempFile(name) { createFile(`./temp/${name}`); }
Ini memberi anda:
Kosongkan nama: createTempFile("log.txt") memberitahu anda apa yang dilakukannya
Logik mudah: Setiap fungsi melakukan hanya satu perkara
Ujian mudah: Anda hanya perlu menguji satu perkara bagi setiap fungsi
Mudah untuk menambah ciri: Perlukan sesuatu yang baharu? Tambah fungsi baharu tanpa menukar fungsi lama
Idea ini berfungsi dalam banyak situasi. Berikut adalah beberapa kes:
// ❌ Bad function authenticate(user, isAdmin) { if (isAdmin) { // Admin login logic } else { // Regular user login logic } } // ✅ Good function authenticateUser(user) { // Regular user login logic } function authenticateAdmin(user) { // Admin login logic }
// ❌ Bad function sendEmail(user, isHtmlFormat) { if (isHtmlFormat) { // Send HTML email } else { // Send plain text email } } // ✅ Good function sendPlainTextEmail(user) { // Send plain text email } function sendHtmlEmail(user) { // Send HTML email }
Bendera Boolean dalam parameter fungsi selalunya menunjukkan bahawa fungsi cuba melakukan terlalu banyak. Membuat fungsi yang berasingan dan fokus menghasilkan kod iaitu:
Lain kali anda ingin menambah parameter boolean, fikirkan tentang membuat dua fungsi.
Pernahkah anda mencuba membahagikan fungsi seperti ini dalam kod anda? Adakah ia membantu? Beritahu saya dalam ulasan!
Atas ialah kandungan terperinci Kod bersih: mengapa bendera boolean dalam parameter fungsi ialah bau kod. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!