BASIC - Refactoring #85
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
thomas_knaus/RaceEngineer#85
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Harte Koppelung bei Predictor-Klassen auflösen (Dependency Injection nutzen)
Im DataProcessor instantiated ihr über dutzende Zeilen alle Predictoren selbst (z. B. private val fuelTrendPredictor = FuelTrendPredictor()). Vorschlag: Da das Projekt ohnehin Koin als DI-Framwork nutzt (sichtbar in AppModule.kt), können wir diese "Predictors" in den Koin-Graphen heben. Im DataProcessor lassen wir sie uns via Constructor Injecton (oder als Liste List) übergeben. Das macht den Code besser testbar (Mocking).
3. Open-Closed-Principle bei der CommandFactory
Die CommandFactory wertet die Sprachkommandos aus der commands.json aus. Zur Generierung der Strings gibt es dort intern einen gigantischen when (id)-Block (getResponseProvider). Für jedes neue Sprachkommando in der JSON müsst ihr den Code der CommandFactory verändern. Vorschlag: Einführung des Strategy Patterns. Wir können ein Interface CommandResponseHandler erstellen. Jeder Spezifische Handler (z. B. GapFrontHandler, PitStrategyHandler) implementiert dieses Interface und registriert sich selbst für sein id. Die Factory sucht dann einfach in zu Laufzeit nach dem passenden Handler.
4. "Magic Numbers" konsolidieren
Sehr oft finden sich harte Berechnungszahlen direkt im Code verstreut, z.B. rawErs / 4000000f, Arrays der Länge (FloatArray(10)) für Lärm/Lenkungs-Berechnungen oder Magic Strings bei den Rules. Vorschlag: Wir können ein Objekt RaceConstants anlegen, um diese Magic Numbers und Annahmen an einem zentralen Ort einstell- und dokumentierbar zu machen.