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
Lepaskan: 2024-12-12 18:56:17
asal
392 orang telah melayarinya

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);
  }
}
Salin selepas log masuk

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?
Salin selepas log masuk
  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}`);
}
Salin selepas log masuk

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
}
Salin selepas log masuk

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
}
Salin selepas log masuk

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!

sumber:dev.to
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan