Laden...

Nach Refactoring Generisches Interface & Basisklasse - Gibt es weitere Verbesserungsmöglichkeiten?

Erstellt von HeikoAdams vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.067 Views
HeikoAdams Themenstarter:in
62 Beiträge seit 2017
vor 5 Jahren
Nach Refactoring Generisches Interface & Basisklasse - Gibt es weitere Verbesserungsmöglichkeiten?

Hallo,
ich bin gerade beim Refactoring unserer Legacy-Produktverwaltungssoftware.
Dort gibt es einen Datenabglich mit anderen Systemen, wo für jede abzugleichende Tabelle eine seperate Klasse existiert.

Ich habe das jetzt so geändert, das ganz unten in der Hierarchie ein generisches Interface steht. Von diesem Interface wird eine generische Basisklasse abgeleitet, in welcher u.a. Eigenschaften, die von allen Abgleich-Klassen benötigt werden, definiert sind und die Funktionen aus dem Interface als abstract oder virtual Funktionen durchgeschleift werden. Von dieser Basisklasse werden dann die jeweiligen Klassen für die einzelnen Tabellen abgeleitet.

Gibt es noch etwas, was man an dieser Stelle besser machen könnte?

Wer ordentlichen Code schreibt, lebt entspannter 8)

3.003 Beiträge seit 2006
vor 5 Jahren

Bei solchen Szenarien besteht hin und wieder auch die Notwendigkeit für ein Basisinterface, damit man beliebige Implementierungen (also auch für beliebige generische Parameter) in eine gemeinsame Collection packen kann.

Also das hier:


interface IDataElement
{
    int Id { get; }
}

interface IGenericDataElement<T> : IDataElement where T: GenericBaseType
{
  T Element { get; }
}

//aufrufender Kontext
ICollection<IDataElement> list = new List<IDataElement>();
list.Add(new TableXObject());
list.Add(new TableYObject());
...

Fraglich ist dann auch, ob man das generische Interface überhaupt benötigt, wenn es eh nur eine direkte Implementierung (nämlich die abstrakte Basisklasse) gibt. Wenn nicht - weg damit, aber das kann man sicher auch anders sehen und ist eh nur Kosmetik.

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)