Bedeutungslose Konstanten
🤓 | Diese Seite ist eine Bewertungsrichtlinie, die ab Blatt 2 annotiert und ab Blatt 3 abgezogen wird. | 🤓 |
Beschreibung
Konstanten ermöglichen es, Konzepte explizit zu modellieren, die sonst nur durch ihre Werte repräsentiert werden. Deswegen sollten Konstanten immer nach dem Konzept und nicht dem Wert benannt werden. Eine Konstante public static final String COMMAND_KEYWORD_SEPARATOR = " ";
hat als Wert eine Zeichenkette, die nur ein Leerzeichen enthält. Deswegen sollte sie aber nicht SPACE
heißen, da dies nicht das unterliegende Konzept ist. Das Konzept, das hier modelliert wurde, ist das Trennzeichen für die Schlüsselworte eines Befehls. Während sich der Wert der Konstante in Zukunft (z.B. andere Darstellung des UIs) ändern kann, bleibt das Konzept gleich. Deswegen ist es auch möglich, dass mehrere Konstanten den gleichen Wert haben. Diese sollten aber aus Gründen der Wartbarkeit dennoch separate Konstanten sein, wenn sie verschiedene Konzepte modellieren.
Zahlen und Zeichenketten (Strings) die fest im Quellcode enthalten sind, sollen als Konstante im Kopf der Klasse deklariert werden.
Sämtliche Regelungen von oben gelten für Konstanten.
Negativbeispiel
// Bad: Naming the constant based on its value, not the concept
public static final String SPACE = " ";
public static final int NUMBER_THREE = 3;
public static final String GUEST = "guest";
}
In diesem Fall sind die Konstanten nach den Werten benannt. Man kann als Leser aber nicht erkennen, wofür die Konstante verwendet wird, also welches Konzept sie repräsentiert. Wenn sich der Wert eine Konstante ändert, passt zudem der Name nicht mehr.
Positivbeispiel
public class Player {
// Good: Naming constants based on the concepts they represent
public static final String COMMAND_KEYWORD_SEPARATOR = " ";
public static final int MAX_CONNECTION_RETRIES = 3;
public static final String DEFAULT_USERNAME = "guest";
}
Hier beschreiben die Namen der Konstanten genau, wofür die Konstanten genutzt werden. Wichtig: Selbst wenn der Wert der Konstante geändert wird (weil z.B. es mehr als 3 Verbindungsversuche geben soll), muss der Name der Konstante nicht geändert werden.
Wenn du diese Seite interessant fandest, findest du hier noch mehr Seite(n) dazu:
Konstanten-Klasse, Schlechter Bezeichner, Magic Number