Rumah >hujung hadapan web >tutorial js >Kod bersih: mengapa bendera boolean dalam parameter fungsi ialah bau kod

Kod bersih: mengapa bendera boolean dalam parameter fungsi ialah bau kod

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-12 18:56:17395semak imbas

Clean code: why boolean flags in function parameters are a code smell

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.

Masalah dengan bendera boolean

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:

  1. Panggilan fungsi tidak jelas: Membaca kod, sukar untuk mengetahui maksud boolean:
   createFile("log.txt", true);  // What does 'true' mean here?
  1. Dua fungsi dalam satu: Boolean berfungsi seperti suis, menjadikan fungsi melakukan perkara yang berbeza

  2. Pengujian semakin sukar: Anda perlu menyemak kedua-dua cara fungsi boleh berfungsi

  3. Sukar untuk menambah ciri: Jika anda memerlukan pilihan ketiga kemudian, anda mungkin menambah boolean lain, memburukkan keadaan

Cara yang lebih baik untuk menulisnya

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:

  1. Kosongkan nama: createTempFile("log.txt") memberitahu anda apa yang dilakukannya

  2. Logik mudah: Setiap fungsi melakukan hanya satu perkara

  3. Ujian mudah: Anda hanya perlu menguji satu perkara bagi setiap fungsi

  4. Mudah untuk menambah ciri: Perlukan sesuatu yang baharu? Tambah fungsi baharu tanpa menukar fungsi lama

Lagi contoh

Idea ini berfungsi dalam banyak situasi. Berikut adalah beberapa kes:

Sistem log masuk

// ❌ 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
}

Sistem e-mel

// ❌ 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
}

Kesimpulannya

Bendera Boolean dalam parameter fungsi selalunya menunjukkan bahawa fungsi cuba melakukan terlalu banyak. Membuat fungsi yang berasingan dan fokus menghasilkan kod iaitu:

  • Mudah dibaca
  • Mudah untuk diuji
  • Mudah dibaiki
  • Mudah ditukar

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn