eTutor-plus-plus / platform

The etutor++ main application.
2 stars 0 forks source link

Klassen aufteilen #94

Closed Martinaut closed 3 months ago

Martinaut commented 1 year ago

Aktuell ist der Programmcode sehr unübersichtlich; es nicht einfach ersichtlich, wie welche Klassen zusammenarbeiten. Um einen neuen Aufgabentyp hinzuzufügen müssen viele verschiedene Klassen angepasst werden.

Es wäre gut, den Programmcode besser zu modularisieren. So befinden sich bspw. in der Klasse at.jku.dke.etutor.service.DispatcherProxyResource Methoden für verschiedenste Aufgabentypen (Datalog, SQL, ...). Es wäre schöner, wenn es hier pro Aufgabentyp eine eigene Klasse geben würde. Analog genauso für alle anderen Klassen (at.jku.dke.etutor.service.AssignmentSPARQLEndpointService, task.model.ts, ...).

Genauso sollte man sich für Code-Fragemente wie folgendem (aus Klasse DispatcherProxyService) eine bessere Lösung einfallen lassen:

if (taskType.equals(ETutorVocabulary.BpmnTask.toString())) {
            proxyResource.deleteBpmnExercise(id);
} else if (taskType.equals(ETutorVocabulary.XQueryTask.toString())) {
            proxyResource.deleteXQExercise(id);
} else if (taskType.equals(ETutorVocabulary.SQLTask.toString())) {
            proxyResource.deleteSQLExercise(id);
} else if (taskType.equals(ETutorVocabulary.DatalogTask.toString())) {
            proxyResource.deleteDLGExercise(id);
} else if (taskType.equals(ETutorVocabulary.PmTask.toString())) {
            proxyResource.deletePmExerciseConfiguration(id);
} else if (taskType.equals(ETutorVocabulary.UMLTask.toString())) {
            proxyResource.deleteUMLExercise(id);
}

Es ist auch nicht ganz klar, wo (Fuseki, Postgres) welche Daten gespeichert werden.

Martinaut commented 1 year ago

Auch so etwas wie in dieser Zeile sollte meiner Meinung nach vermieden werden. Modul-spezifischer Code sollte nur in den jeweiligen Modul-Paketen enthalten sein und "Core"-Code sollte für Module nicht angepasst werden müssen.

kevschuetz commented 1 year ago

Siehe https://github.com/eTutor-plus-plus/platform/commit/a469f82768acef000c0fc6e564b6df315fd3e7ae bezüglich Refactoring in der platform.