Heim >Web-Frontend >js-Tutorial >Sauberer Code: Warum boolesche Flags in Funktionsparametern einen Codegeruch verursachen

Sauberer Code: Warum boolesche Flags in Funktionsparametern einen Codegeruch verursachen

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-12 18:56:17388Durchsuche

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

Boolesche Flags in Funktionsparametern können das Lesen und Warten Ihres Codes erschweren. Sehen wir uns an, warum Sie sie vermeiden sollten und was Sie stattdessen tun können.

Das Problem mit booleschen Flags

Die Verwendung eines booleschen Parameters bedeutet oft, dass Ihre Funktion zwei verschiedene Dinge tut und damit gegen das Single-Responsibility-Prinzip (SRP) verstößt. Hier ist ein typisches Beispiel:

function createFile(name, isTemp) {
  if (isTemp) {
    fs.create(`./temp/${name}`);
  } else {
    fs.create(name);
  }
}

Das sieht vielleicht einfach aus, bringt aber mehrere Probleme mit sich:

  1. Unklare Funktionsaufrufe: Beim Lesen des Codes ist es schwer zu wissen, was der boolesche Wert bedeutet:
   createFile("log.txt", true);  // What does 'true' mean here?
  1. Zwei Funktionen in einer: Der boolesche Wert funktioniert wie ein Schalter, wodurch die Funktion verschiedene Dinge ausführt

  2. Testen wird schwieriger: Sie müssen prüfen, ob die Funktion in beide Richtungen funktionieren kann

  3. Es ist schwierig, Funktionen hinzuzufügen: Wenn Sie später eine dritte Option benötigen, fügen Sie möglicherweise einen weiteren Booleschen Wert hinzu, was die Sache noch schlimmer macht

Eine bessere Art, es zu schreiben

Teilen Sie die Funktion in zwei separate Funktionen auf, die jeweils eine Aufgabe erfüllen:

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

function createTempFile(name) {
  createFile(`./temp/${name}`);
}

Das gibt Ihnen:

  1. Klare Namen: createTempFile("log.txt") sagt Ihnen genau, was es tut

  2. Einfache Logik: Jede Funktion macht nur eine Sache

  3. Einfaches Testen: Sie müssen nur eine Sache pro Funktion testen

  4. Einfaches Hinzufügen von Funktionen: Brauchen Sie etwas Neues? Fügen Sie eine neue Funktion hinzu, ohne die alten zu ändern

Weitere Beispiele

Diese Idee funktioniert in vielen Situationen. Hier sind einige Fälle:

Login-System

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

E-Mail-System

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

Um zusammenzufassen

Boolesche Flags in Funktionsparametern zeigen oft an, dass eine Funktion versucht, zu viel zu tun. Durch das Erstellen separater, fokussierter Funktionen wird Code erstellt, der wie folgt lautet:

  • Leicht zu lesen
  • Einfach zu testen
  • Einfach zu reparieren
  • Einfach zu wechseln

Wenn Sie das nächste Mal einen booleschen Parameter hinzufügen möchten, denken Sie darüber nach, stattdessen zwei Funktionen zu erstellen.


Haben Sie versucht, solche Funktionen in Ihrem Code aufzuteilen? Hat es geholfen? Lass es mich in den Kommentaren wissen!

Das obige ist der detaillierte Inhalt vonSauberer Code: Warum boolesche Flags in Funktionsparametern einen Codegeruch verursachen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn