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.
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:
createFile("log.txt", true); // What does 'true' mean here?
Zwei Funktionen in einer: Der boolesche Wert funktioniert wie ein Schalter, wodurch die Funktion verschiedene Dinge ausführt
Testen wird schwieriger: Sie müssen prüfen, ob die Funktion in beide Richtungen funktionieren kann
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
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:
Klare Namen: createTempFile("log.txt") sagt Ihnen genau, was es tut
Einfache Logik: Jede Funktion macht nur eine Sache
Einfaches Testen: Sie müssen nur eine Sache pro Funktion testen
Einfaches Hinzufügen von Funktionen: Brauchen Sie etwas Neues? Fügen Sie eine neue Funktion hinzu, ohne die alten zu ändern
Diese Idee funktioniert in vielen Situationen. Hier sind einige Fälle:
// ❌ 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 }
// ❌ 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 }
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:
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!