Konstanten-Klasse
🚧 | Diese Seite befindet sich in Bearbeitung | 🚧 |
🤓 | Diese Seite ist eine Bewertungsrichtlinie, die ab Blatt 2 annotiert und ab Blatt 3 abgezogen wird. | 🤓 |
Beschreibung
Konstanten-Klassen sind Klassen, in denen alle/viele Konstanten des Programms deklariert werden. Dies sollte vermieden werden, da Konstanten dort deklariert werden sollten, wo sie verwendet werden. Konstanten-Klassen erkennt man oft daran, dass diese keinen spezifischen Belang/Anliegen der Domäne modellieren, sondern ausschließlich oder primär dem Speichern von Konstanten dienen. Ein weiteres Erkennungsmerkmal kann der gehäufte Zugriff von mehreren Klassen über Klassengrenzen hinweg auf Konstanten einer einzigen Klasse sein.
Konstanten-Klassen sollten IMMER vermieden werden.
Konstanten sind dort zu deklarieren, wo sie auch verwendet werden.
Schwieriger wird es natürlich, wenn eine Konstante von mehreren Klassen verwendet wird. Ein guter Ort wäre z.B. eine gemeinsame Oberklasse oder auch ein gemeinsames Interface, wenn die Konstante dazu in Bezug steht.
Hier wird auch noch einmal im Detail auf andere Wege eingegangen, Konstanten anders und global zu definieren und warum dies schlechte Methoden sind.
Negativbeispiel
public class Constants {
public static final int MATRIX_MAX_WIDTH = 9;
public static final int MATRIX_MAX_HEIGHT = 9;
public static final int MATRIX_DEFAULT_CELL_VALUE = -1;
public static final String UI_CLOSE_BUTTON_TEXT = "Close"
public static final String PARSING_EXCEPTION_MESSAGE = ...
...
}
Diese Klasse modelliert kein Belangen oder Anliegen der Domäne, sondern kapselt lediglich Konstanten, die zu verschiedenen anderen Klassen gehören.
Positivbeispiel
public class Matrix {
private static final int MAX_WIDTH = 9;
private static final int MAX_HEIGHT = 9;
private static final int DEFAULT_CELL_VALUE = -1;
public void calculateCore() {
...
}
}
public class UserInterface {
private static final String CLOSE_BUTTON_TEXT = "Close"
... // Other UI functionality
}
public class ParsingException {
private static final String MESSAGE = ...
... // Other Exception functionality
}
Hier wurden die Konstanten-Klasse aufgelöst. Die Konstanten wurden in genau die Klassen verschoben, die diese auch verwenden.
Wenn du diese Seite interessant fandest, findest du hier noch mehr Seite(n) dazu:
Komplexität, Bedeutungslose Konstanten, Magic Number