dedlfix: Frage zum Wiki-Artikel „Grundlagen der Programmierung“

Beitrag lesen

problematische Seite

Tach!

Wenn man Integer hätte, stimmte es schon, denn da kann es ja keinen Wert zwischen 17 und 18 geben.

„Kommt in dem Fall das Gleiche raus“ ≠ „stimmt schon“. Wie gesagt, die 18 sollte im Code auftauchen, nicht eine magische 17, wo man sich fragt, woher die kommt.

Die 18 ist in gleicher Weise magisch. Man kann deren Bedeutung zwar dem Kontext entnehmen und dem allgmeinen Wissen, dass (bei uns) die Volljährigkeit bei 18 erreicht ist, aber andere Vorkommen von 18 kann man auch nur anhand des Kontextes davon unterscheiden. Besser ist es, eine Konstante zu erstellen, die einen sprechenden Namen hat.

Durch solche Konstanten und deren Wiederverwendung wird eindeutig, bei welchen Verwendungen die Werte wirklich dasselbe darstellen und nicht nur zufällig gleich sind. Das erleichtert auch das Refactoring, falls man mal eine 21 oder so verwenden muss. Eine Änderungsstelle statt Suchen und Ersetzen aller Werte mit Kontextbeachtung.

Konstanten fressen normalerweise auch kein Brot, außer im Quelltext, denn sie werden meist beim Parsen durch die eigentlichen Werte ersetzt. Dem Prozessor ist die Bedeutung ja letztlich egal. "Normalerweise", weil sie unter Umständen aber die Ausführung verlangsamen, wenn auch nur im Mikrooptimierungssinne. In PHP werden Konstanten mit define() erstellt, und das ist kein Sprachkonstrukt, das der Parser/Compiler auflöst, sondern ein normaler Funktionsaufruf, der Ausführungszeit kostet, wenn auch nur minimal.

dedlfix.