C++ Core Guidelines: Regeln für Anweisungen und Arithmetik

Rainer Grimm hat am 16. März 2018 in seinem Beitrag zu den C++ Core Guidelines Regeln für Anweisungen und Arithmetik mehrere Regeln für robuste C++-Programme zusammengefasst. Die offizielle Fassung der Guidelines führt darunter Vorgaben zu leeren Anweisungen, Schleifensteuerung, Vorzeichen und arithmetischen Grenzwerten.

Der Beitrag setzt die frühere Betrachtung der switch-Regeln fort. Bei ES.84 bis ES.87 geht es darum, namenlose lokale Objekte, leere Anweisungen und Änderungen an der Laufvariablen eines klassischen for-Blocks sichtbar beziehungsweise zu vermeiden. Redundante Vergleiche mit == oder != sollen Bedingungen ebenfalls nicht unnötig verlängern.

Vorzeichen und Grenzwerte sauber behandeln

Die arithmetischen Regeln ES.100 bis ES.106 warnen vor gemischten signed- und unsigned-Operationen. Die Typen sollen zur jeweiligen Aufgabe passen: Vorzeichenbehaftete Typen dienen der Arithmetik, unsigned-Typen vor allem Bitoperationen. Ein unerwarteter Typwechsel kann aus einer negativen Zahl einen sehr großen positiven Wert machen.

ES.103 und ES.104 beziehen sich auf Über- und Unterläufe. Bei signed-Typen kann ein Überlauf undefiniertes Verhalten auslösen, während unsigned-Typen bei bestimmten Operationen moduloartig zurücklaufen. ES.105 behandelt Division durch null, ES.106 rät davon ab, unsigned nur zur Vermeidung negativer Werte einzusetzen.

Regeln für Spielecode und technische Teams

Für Spiele- und Echtzeitanwendungen sind solche Fehler besonders relevant, weil sie in Eingabeverarbeitung, Physik, Speicherverwaltung oder Netzwerkcode schwer reproduzierbare Ergebnisse erzeugen können. Die Guidelines ersetzen keine Tests und keine Compilerdiagnosen, liefern aber konkrete Prüfpunkte für Reviews und statische Analyse.

Weitere News

Weitere News

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein