Maison > interface Web > js tutoriel > Code propre : pourquoi les indicateurs booléens dans les paramètres de fonction sont une odeur de code

Code propre : pourquoi les indicateurs booléens dans les paramètres de fonction sont une odeur de code

Mary-Kate Olsen
Libérer: 2024-12-12 18:56:17
original
396 Les gens l'ont consulté

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

Les indicateurs booléens dans les paramètres de fonction peuvent rendre votre code plus difficile à lire et à maintenir. Voyons pourquoi vous devriez les éviter et ce que vous pouvez faire à la place.

Le problème avec les drapeaux booléens

L'utilisation d'un paramètre booléen signifie souvent que votre fonction fait deux choses différentes, enfreignant ainsi le principe de responsabilité unique (SRP). Voici un exemple typique :

function createFile(name, isTemp) {
  if (isTemp) {
    fs.create(`./temp/${name}`);
  } else {
    fs.create(name);
  }
}
Copier après la connexion

Cela peut paraître simple, mais cela pose plusieurs problèmes :

  1. Appels de fonction peu clairs : En lisant le code, il est difficile de savoir ce que signifie le booléen :
   createFile("log.txt", true);  // What does 'true' mean here?
Copier après la connexion
  1. Deux fonctions en une : Le booléen fonctionne comme un interrupteur, permettant à la fonction de faire des choses différentes

  2. Les tests deviennent plus difficiles : Vous devez vérifier dans les deux sens la fonction peut fonctionner

  3. Difficile d'ajouter des fonctionnalités : Si vous avez besoin d'une troisième option plus tard, vous pourriez ajouter un autre booléen, ce qui aggraverait les choses

Une meilleure façon de l'écrire

Divisez la fonction en deux fonctions distinctes, chacune faisant une chose :

function createFile(name) {
  fs.create(name);
}

function createTempFile(name) {
  createFile(`./temp/${name}`);
}
Copier après la connexion

Cela vous donne :

  1. Effacer les noms : createTempFile("log.txt") vous indique exactement ce qu'il fait

  2. Logique simple : Chaque fonction ne fait qu'une seule chose

  3. Tests faciles : Vous n'avez besoin de tester qu'une seule chose par fonction

  4. Des fonctionnalités simples à ajouter : Besoin de quelque chose de nouveau ? Ajouter une nouvelle fonction sans changer les anciennes

Plus d'exemples

Cette idée fonctionne dans de nombreuses situations. Voici quelques cas :

Système de connexion

// ❌ 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
}
Copier après la connexion

Système de messagerie

// ❌ 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
}
Copier après la connexion

Pour résumer

Les indicateurs booléens dans les paramètres de fonction montrent souvent qu'une fonction essaie d'en faire trop. Créer des fonctions séparées et ciblées crée un code qui est :

  • Facile à lire
  • Facile à tester
  • Facile à réparer
  • Facile à changer

La prochaine fois que vous souhaiterez ajouter un paramètre booléen, pensez plutôt à créer deux fonctions.


Avez-vous essayé de diviser des fonctions comme celle-ci dans votre code ? Est-ce que ça a aidé ? Faites-le moi savoir dans les commentaires !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal