AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TList<>.OnBefore?

Ein Thema von himitsu · begonnen am 23. Jan 2016 · letzter Beitrag vom 26. Jan 2016
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.388 Beiträge
 
Delphi 12 Athens
 
#1

AW: TList<>.OnBefore?

  Alt 25. Jan 2016, 12:58
Wozu soll man erst einen Wrapper bauen, wo doch das OnBefore die einzige wichtige Funktion ist, die man wirklich in der Liste gebrauchen kann?
Soll ich jetzt dutzende Methoden verpacken und jeweils mit der Check-Methode davor zur Liste umleiten, anstatt nur eine Stelle in der Liste zu haben?

Gerade die generische TList<> hat rein garnichts mehr mit der alten TList zu zun.
Alleine das Interface der TList<> ist knapp 400 Zeilen lang, mit unmassen an Methoden, die man fast alle Wrappen müsste, wenn man dem Endnutzer meiner Komponente auch alle Möglichkeiten offen lassen will. (TList als Child-Liste in einer Komponente, also für einen schönen Baum an Komponenten)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.075 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: TList<>.OnBefore?

  Alt 25. Jan 2016, 13:13
Alleine das Interface der TList<> ist knapp 400 Zeilen lang, mit unmassen an Methoden, die man fast alle Wrappen müsste...
Reden wir wirklich von System.Generics.Collections.TList<T>?
In Delphi Seattle geht die gesamte Klassendefinition von Zeile 340 bis Zeile 450.
Die öffentlichen Methoden von 369 bis 425 mit vielen Leerzeilen dazwischen, die fünf Propertys und ggf. der Enumerator kommen noch dazu.
Aber soooviel zu wrappen ist es auch nicht, wenn man unbedingt noch die Prüfung im Add, Insert und AddRange braucht.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.388 Beiträge
 
Delphi 12 Athens
 
#3

AW: TList<>.OnBefore?

  Alt 25. Jan 2016, 13:33
Mit dem Helper und allem drum und dran geht es bei Zeile 20 los, aber OK, nur TList<> sind dennoch 100 Zeilen (330 bis 440)
Alleine der ListHelper von 70 bis 330 und die Events werden in jeder dessen Methode einzeln aufgerufen.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (25. Jan 2016 um 13:36 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: TList<>.OnBefore?

  Alt 26. Jan 2016, 10:18
Dass ein solches OnBefore Event eine krasse Verletzung des LSP wäre, ist noch keinem aufgefallen, oder?
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.388 Beiträge
 
Delphi 12 Athens
 
#5

AW: TList<>.OnBefore?

  Alt 26. Jan 2016, 11:05
Dass ein solches OnBefore Event eine krasse Verletzung des LSP wäre, ist noch keinem aufgefallen, oder?
Wieso?

Wenn das direkt im Basistypen vorhanden wäre, würde es doch dem LSP entsprechen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: TList<>.OnBefore?

  Alt 26. Jan 2016, 11:17
Dass ein solches OnBefore Event eine krasse Verletzung des LSP wäre, ist noch keinem aufgefallen, oder?
Wieso?
Weil es das Verhalten von Add und dergleichen ändert.

Übrigens würdest du selbst mit Vererbung von TList<T> nichts gewinnen, da du durch das Fehlen von virtual auf den veränderten Methoden eine solche - ich nenn sie mal TFilteredList<T> - nicht als TList<T> übergeben kannst, da die sich wieder wie eine TList<T> verhalten würde. Das heißt du müsstest immernoch alle betroffenen Methoden von TList<T> auf TFilteredList<T> ändern. Und dann kannst du auch den Ansatz mit der Komposition gehen.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (26. Jan 2016 um 11:31 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz