AGB  ·  Datenschutz  ·  Impressum  







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

Benamsing von Listen

Ein Thema von freimatz · begonnen am 28. Sep 2020 · letzter Beitrag vom 28. Sep 2020
Antwort Antwort
freimatz

Registriert seit: 20. Mai 2010
1.442 Beiträge
 
Delphi 11 Alexandria
 
#1

Benamsing von Listen

  Alt 28. Sep 2020, 17:28
Wir haben z.B. einen type TBla. Dann gibt es eine TBlaList = class(TList<TBla>); - soweit so gut.

Nun möchte ich verstärkt IList<> verwenden. Ich mache also:
IBlaList = class(IList<TBla>);
TBlaList = class(TList<TBla>, IBlaList);

Nun habe ich zwei TBlaList. Die oben erste kann ich nicht einfach ändern, die ist verteilt in >1 Million Zeilen Quellcode.

Ähnlich ist der Fall mit
IStringList = class(IList<String>);
TStringList = class(TList<String>, IStringList);

Wie würdet Ihr sowas benennen?
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.156 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Benamsing von Listen

  Alt 28. Sep 2020, 17:43
Ich würde vorher noch einmal innehalten und überlegen ob man wirklich ein TMeinContainer braucht und weshalb es nicht ein TContainer<TMeins> ebenso tut.

Was gewinnt man dadurch?

PS: https://de.wikipedia.org/wiki/Kompos..._von_Vererbung
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.442 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Benamsing von Listen

  Alt 28. Sep 2020, 18:10
Wir gewinnen lesbareren Code. Bei uns ist es Konvention ), dass es zu jedem I* ein T* gibt. (Wobei man schon oft das T* nicht kennen muss.). Ausserdem halte ich das für DRY
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Benamsing von Listen

  Alt 28. Sep 2020, 18:19
Zitat:
Wir haben z.B. einen type TBla. Dann gibt es eine TBlaList = class(TList<TBla>); - soweit so gut.

Nun möchte ich verstärkt IList<> verwenden. Ich mache also:
IBlaList = class(IList<TBla>);
TBlaList = class(TList<TBla>, IBlaList);
Das TBla ist doch überall das Selbe?
Warum dann überhaupt zwei TBlaList, anstatt das Interface direkt in die erste Deklaration?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.075 Beiträge
 
Delphi 12 Athens
 
#5

AW: Benamsing von Listen

  Alt 28. Sep 2020, 19:21
Ich benutze sehr oft und gerne die Mehrzahl zur Benennung, das geht meistens sinnvoll auf.

Delphi-Quellcode:
TBla
TBlas = class(TList<TBla;
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#6

AW: Benamsing von Listen

  Alt 28. Sep 2020, 20:36
Ich benutze sehr oft und gerne die Mehrzahl zur Benennung, das geht meistens sinnvoll auf.
Ist halt nicht so klar, wenn es sowohl Listen als auch Arrays davon gibt.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.442 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Benamsing von Listen

  Alt 28. Sep 2020, 20:52
Das TBla ist doch überall das Selbe?
Warum dann überhaupt zwei TBlaList, anstatt das Interface direkt in die erste Deklaration?
Weil dann die erste TBlaList die Referenzzählung bekommt und dann funktioniert der existierende Code nicht mehr.

Ich benutze sehr oft und gerne die Mehrzahl zur Benennung, das geht meistens sinnvoll auf.
Ist halt nicht so klar, wenn es sowohl Listen als auch Arrays davon gibt.
Ja, wir haben oft auch beides. Und dann gibt es noch Wörter die in Ein- und Mehrzahl gleich lauten (z.B. "datum").

Geändert von freimatz (28. Sep 2020 um 20:57 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#8

AW: Benamsing von Listen

  Alt 28. Sep 2020, 21:33
Wir gewinnen lesbareren Code. Bei uns ist es Konvention ), dass es zu jedem I* ein T* gibt. (Wobei man schon oft das T* nicht kennen muss.). Ausserdem halte ich das für DRY
Ich würde da übrigens auch nochmal den Grad vorher lesen: https://clean-code-developer.de/die-..._Principle_ISP
Zitat:
Je weniger in dessen Interface enthalten ist, desto geringer ist die Kopplung zwischen den beiden Komponenten.
Es ist also beinahe sinnlos, wenn es zu jedem T* genau ein I* gibt. Cleaner wäre soetwas:
TDelphiPraxis = class(..., ITopicSource, ITopicSink, IUserRepository); => Der Nutzer gibt das Interface vor, und es enthält genau so viel, wie der Nutzer braucht.

Geändert von jfheins (28. Sep 2020 um 21:41 Uhr)
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.442 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Benamsing von Listen

  Alt 28. Sep 2020, 23:10
Das gilt nur für etwas größere Klassen. okok, auch wir haben solche und wir versuchen da auch mehrere Interfaces zu machen. In der Regel sind die Klassen recht klein und implementieren nur ein interface. Was will man denn noch aufteilen wenn das interface nur eine Methode hat?
Und ganz sicher hat es keinen Sinn wenn nun die TBlaList das IBlaList basierend auf IList implementiert, wenn ich diese IList noch aufteile. Die IList stammt übrigens von Spring4D. Aber ich denke das tut alles nichts zur Sache mit dem Namensproblem.
Trotzdem Danke für alle Antworten.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Benamsing von Listen

  Alt 28. Sep 2020, 23:50
Nicht direkt.

Wenn man es als Objekt (TBlaList) erstellt, dann ist nach dem Create das RefCount = 0
und die Freigabe geschieht später im aufgerufenen Free/Destroy.

Beim Create, welches direkt an eine Interface-Variable geht, steht RefCount auf 1.


Einziges Problem was es geben könnte, wenn jemand auf die Idee kommt und Objekt-Referenzen mit Interface-Referenzen vermischt,
aber sowas macht ja niemand.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz