Flag

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

In der Programmierung kommt es vor, dass das Ergebnis von bestimmten Tests für später festgehalten werden muss. Die Variable, in der dieses Ergebnis gespeichert wird, nennt man Flag oder auch allgemein Schalter. Der Begriff Flag wird vor allem verwendet, wenn das Ergebnis nur zwei Zustände haben kann, typischerweise „wahr“ oder „falsch“. Das Flag ist dann „gesetzt“ oder „nicht gesetzt“ (Fahnen auf Halbmast gibt es beim Programmieren nicht). Bei einem Schalter sind auch mehrere Zustände möglich. Die Begriffstrennung ist hier aber nicht strikt.

Zur Darstellung des Zustandes „falsch“ verwendete man früher die Zahl 0. Für „wahr“ waren -1 oder 1 üblich – daher stammt in Sprachen wie C oder JavaScript die Gleichsetzung von 0 und false, und true für alle anderen Zahlen.

In Sprachen, die boolesche Datentypen kennen, sollte man diese auch für Flags nutzen. In JavaScript ist das Ergebnis eines Vergleichsoperators immer ein boolescher Wert. Diesen kann man bei Bedarf auch direkt in einer Variablen speichern:

Speichern eines Testergebnisses in einem Flag
const volljährig = alter >= 18;
An anderer Stelle lässt sich das Flag dann für Tests nutzen:
if (volljährig) {
   ...
}

Man findet für das Speichern von Testergebnissen leider viel zu oft Meisterwerke der Umständlichkeit. Es gibt Sprachen, in denen man so etwas tun muss, weil ihre Ausdrucksfähigkeit kastriert ist (z.B. COBOL). In den Sprachen der C-Familie (z.B. JavaScript und PHP) ist das aber nicht der Fall. Blamieren Sie sich nicht mit Code folgender Art:

Flags, COBOL Style. NICHT NACHMACHEN
var volljährig;
if (alter >= 18) {
   volljährig = true;
}
else {
   volljährig = false;
}

Die Werte für boolesche Variablen werden hingegen im Allgemeinen mit „true“ (wahr) bzw. „false“ (falsch) bezeichnet.