Angenommen, Sie haben eine Bibliothek, die auf zwei Ebenen entwickelt wurde: eine Core-, eine Low-Level- und eine High-Level-Bibliothek. Mein Entwurf konzentriert sich darauf, die Kopplung zwischen den beiden zu reduzieren.Encapsulate Aufzählungen oder nicht?
Eine der Routinen der Schicht auf hoher Ebene akzeptiert eine Aufzählung (z. B. FOO = 0, BAR = 1, BAZ = 2). Diese Aufzählung wird direkt von den Routinen niedriger Ebene für ihre Endzwecke verwendet.
Um dies zu entwerfen, ich habe drei Möglichkeiten:
- Die hohe Routine eine Aufzählung der hohen Modul verkapselt akzeptiert und übersetzt eine Eins-zu-eins den hohen Pegel Enum in den Enum Low-Level Werte. Vorteile: Untere Kupplung. Nachteile: Ich wiederhole mich selbst
- Die High-Level-Routine akzeptiert die Aufzählungswerte des Low-Level-Moduls, und übergeben Sie es "wie es ist". Vorteile: weniger Tipparbeit, weniger Duplizierung. Nachteile: höhere Kopplung.
- Ich erstelle ein "Enumerationsmodul", das extern ist und beide Ebenen von diesem Aufzählungsmodul abhängen. Vorteile: konzeptionelle Klarheit. Nachteile: Uber Catch-All-Modul mit Aufzählungen, die nicht in der Nähe ihres Codes sind.
Haben Sie irgendwelche Erfahrung in diesem Fall? Ich würde mit 1 gehen, da es die Kopplung reduziert, aber ich würde gerne Ihre Erfahrung auch hören.