a-dead-trousers hat geschrieben: ↑22.04.2022 07:31Die Lösung von Icke, dafür ein Interface zu verwenden, halte ich persönlich für besser anstatt das im Public-Bereich einer Klasse zu definieren.
Wenn ich den Typ zu der Klasse definiere, dann gehe ich davon aus, dass ich diesen Typ auch in und für die Klasse benötige. Also wird die Klasse eh immer geladen werden.a-dead-trousers hat geschrieben: ↑22.04.2022 07:311) Bei einem Zugriff darauf muss nicht die gesamte Klasse in den Speicher geladen werden.
In dem Fall ist ein Refactoring notwendig.a-dead-trousers hat geschrieben: ↑22.04.2022 07:312) Möchte man das später in einem anderen Kontext wiederverwenden, muss man nicht auf die "alte" Klasse referenzieren, die man dafür nicht verwenden möchte (oder kann).
So lange ich einen Typen nicht "außerhalb" benötige, sehe ich keinen Vorteil darin, diesen Im Dictionary zu definieren.a-dead-trousers hat geschrieben: ↑22.04.2022 07:31Die beste Lösung, meines Erachtens, ist und bleibt aber, das im DDIC zu definieren. Damit ist man wirklich völlig losgelöst von jedeweder Programmlogik.
Folgende Benutzer bedankten sich beim Autor ralf.wenzel für den Beitrag:
a-dead-trousers
Genau.
Der OP spricht von einem alten Report der aufgemotzt werden soll. Daher gehe ich davon aus, dass die Typdefinition nur in diesem Report und nicht außerhalb benötigt wird.ewx hat geschrieben: ↑22.04.2022 09:21So lange ich einen Typen nicht "außerhalb" benötige, sehe ich keinen Vorteil darin, diesen Im Dictionary zu definieren.a-dead-trousers hat geschrieben: ↑22.04.2022 07:31Die beste Lösung, meines Erachtens, ist und bleibt aber, das im DDIC zu definieren. Damit ist man wirklich völlig losgelöst von jedeweder Programmlogik.
Wobei man durchaus diskutieren kann, ob man nicht Typendefinitionen immer "unabhängig" definieren sollte/ könnte.
Ich mache das immer dann, wenn ich Zusatzinformationen benötige, die im DDIC mitgegeben werden können, die bei der Typdefinition im Programm fehlen ( Referenzinformationen für Mengen und Währungen, Fremdschlüssel, Suchhilfen ) oder wenn die Schnittstelle die Werte zwingend im DDIC benötigt ( [RFC]-FuBa ). Das sind wie - von Ralf angesprochen - meist Sachen die in Dynpros oder halt auch in ALV-Ausgabelisten auftauchenralf.wenzel hat geschrieben: ↑22.04.2022 12:11Ich habe Typen früher auch immer im DDIC angelegt und mache das inzwischen nicht mehr -- eigentlich nur noch für Felder, die auf irgendwelchen Dynpros gebraucht werden.
Die Verwendung via Interface hat aber auch seine Nachteile. Es ist nicht selten, dass ein Interface eine ganze Reihe von Typdefinitionen enthält. Und wenn man jetzt an einer davon eine Änderung vornimmt, werden alle Reports neu kompiliert, die auf dieses Interface oder eine Kompontente desselben referenzieren wohingegen bei Anlage via DDIC nur diejenigen Reports neu kompiliert werden, welche auf den benötigten Typ referenzieren. Desweiteren könnte man bei zentralen Interfaces Probleme mit parallelen Entwicklungen bekommen, die gleichzeitig an verschiedenen Objekten des Interfaces Änderungen machen möchten.ralf.wenzel hat geschrieben: ↑22.04.2022 12:11Ansonsten finde ich die INTF-Idee am Besten, weil man so den Typen schön von der Verwendung entkoppeln kann.
Die ich sodann als „Paket“ mit einer einzigen Anweisung übernehmen kann, weil im Interface der logische Zusammenhang bestimmter Typen festgeschrieben ist.black_adept hat geschrieben: ↑22.04.2022 15:12Es ist nicht selten, dass ein Interface eine ganze Reihe von Typdefinitionen enthält.
Dem stimme ich ja grundsätzlich zu. Aber die Nachteile fallen einem halt eher auf, wenn sie einen stören als dass die Vorteile einem auffallen, wenn sie die Arbeit erleichtern.ralf.wenzel hat geschrieben: ↑22.04.2022 16:03Die ich sodann als „Paket“ mit einer einzigen Anweisung übernehmen kann, weil im Interface der logische Zusammenhang bestimmter Typen festgeschrieben ist.black_adept hat geschrieben: ↑22.04.2022 15:12Es ist nicht selten, dass ein Interface eine ganze Reihe von Typdefinitionen enthält.
Du siehst: Das muss kein Nachteil sein.
Ralf