Sie sind hier 61
Richtigen Code schreiben
Ein wenig Qualitätssicherung
Bei der Qualitätssicherung (Quality Assurance, kurz: QA) geht
es darum, Software auf Fehler zu überprüfen. Wir wollen
unseren Code ebenfalls einer kleinen QA unterziehen. Öffnen
Sie »battleship.html« in Ihrem Browser und spielen Sie einfach
ein bisschen. Probieren Sie ein paar Sachen aus. Funktioniert
alles perfekt, oder gibt es Probleme? Falls ja, notieren Sie sie
hier. Unten sehen Sie außerdem unseren Testlauf.
QA-Notizen
Schreiben Sie alles auf, was nicht
wie gewünscht funktioniert oder
verbessert werden kann.
Danach haben wir 0
eingegeben, um absicht-
lich vorbeizuschießen.
Aber dann bekommen wir
drei Treffer auf einmal!
Mit dem dritten und
letzten Treffer wird das
Schiff versenkt.
Wie Sie sehen, haben wir vier
Versuche gebraucht, um das
Schiff mit einer Genauigkeit
von 0,75 zu versenken.
Hier sehen Sie unsere Spiel-
Interaktion.
Zuerst haben wir eine
ungültige Zahl eingegeben (9).
62 Kapitel 2
Boolesche Operatoren verwenden
Boolesche Operatoren ermöglichen
komplexere logische Anweisungen.
Sie kennen Bedingungen inzwischen so gut,
dass Sie überprüfen können, ob die Temperatur
beispielsweise über 32 Grad liegt. Oder ob eine
Variable, die darstellt, ob ein Artikel am Lager
(inStock) ist, einen wahren Wert hat. Gelegentlich
müssen aber noch mehr Dinge überprüft werden.
Manchmal wollen Sie wissen, ob die Temperatur
über 32 Grad, aber unter 100 Grad liegt. Oder ob ein
Artikel am Lager (inStock) und rabattiert (onSale) ist.
Oder ob ein Artikel nur an Dienstagen rabattiert ist,
sofern der Benutzer ein VIP-Mitglied ist.
Wie Sie sehen, können die Bedingungen recht
komplex werden. Das wollen wir uns anhand einiger
Beispiele etwas genauer ansehen.
Eigentlich ist mir die Spiellogik
ziemlich klar, wenn man mal von den
Booleschen Operatoren absieht.
Die sind doch dafür da, mehrere
Bedingungen zu verketten, oder?
Um zu testen, ob ein Artikel inStock UND onSale ist, könnten wir das hier
schreiben:
if (inStock == true) {
if (onSale == true) {
// Klingt nach einem Schnäppchen!
alert("Kaufen, kaufen, kaufen!");
}
}
Zuerst wird geprüft, ob ein Artikel
am Lager ist.
Dann wird getestet, ob der Artikel rabattiert ist.
Daraufhin wird eine
bestimmte Aktion ausgeführt,
zum Beispiel kaufen.
Beachten Sie, dass dieser Code nur ausgeführt
wird, wenn beide Bedingungen wahr sind!
Durch Kombination der Bedingungen kann dieser Code vereinfacht
werden. Im Gegensatz zu unserem Spiel, bei dem auf die Bedingung
< 0 ODER guess > 6 getestet wurde, wollen wir jetzt herausfinden, ob
inStock UND onSale wahr sind. Mal sehen …
Sie sind hier 63
Richtigen Code schreiben
if (inStock == true && onSale == true) {
// Klingt nach einem Schnäppchen!
alert("Kaufen, kaufen, kaufen!");
}
Dieser Code ist nicht nur kürzer, sondern
auch lesbarer. Vergleichen Sie das mit dem
Code auf der vorigen Seite.
Hier ist der UND-Operator. Werden Bedingungen per UND verknüpft, sind
beide zusammen nur wahr, wenn der erste UND der zweite Teil wahr sind.
if (inStock == true && (onSale == true || price < 60)) {
// Klingt nach einem Schnäppchen!
alert("Kaufen, kaufen, kaufen!");
}
Hier benutzen wir in der gleichen Bedingung UND sowie ODER gemeinsam. Das hier bedeutet: Ist ein Artikel
inStock UND ist er entweder onSale ODER ist der Preis (price) kleiner als 60, soll gekauft werden.
Hier benutzen wir runde Klammern, um die Bedingungen zu
gruppieren. So wird zuerst das ODER ausgewertet. Mit
diesem Ergebnis wird dann das Resultat des UND ermittelt.
Das ist aber noch nicht alles; wir können Boolesche Operatoren auf
verschiedene Arten verbinden:
Unten sehen Sie eine ganze Reihe von Booleschen Ausdrücken, die ausgewertet werden müssen. Füllen Sie die
Lücken aus und überprüfen Sie Ihre Antworten am Ende dieses Kapitels, bevor Sie weiterlesen.
var temp = 81;
var willRain = true;
var humid = (temp > 80 && willRain == true);
Wie lautet der Wert von humid?
var guess = 6;
var isValid = (guess >= 0 && guess <= 6);
Wie lautet der Wert von isValid?
var kB = 1287;
var tooBig = (kB > 1000);
var urgent = true;
var sendFile =
(urgent == true || tooBig == false);
Wie lautet der Wert von sendFile?
var keyPressed = "N";
var points = 142;
var level;
if (keyPressed == "J" ||
(points > 100 && points < 200)) {
level = 2;
} else {
level = 1;
}
Wie lautet der Wert von level?
Spitzen Sie Ihren Bleistift

Get JavaScript-Programmierung von Kopf bis Fuß now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.