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
Mary-Kate Olsenoriginal
2024-12-12 18:56:17388parcourir

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);
  }
}

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?
  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}`);
}

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
}

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
}

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!

Déclaration:
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