![]() |
Benamsing von Listen
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? |
AW: Benamsing von Listen
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: ![]() |
AW: Benamsing von Listen
Wir gewinnen lesbareren Code. Bei uns ist es
![]() ![]() |
AW: Benamsing von Listen
Zitat:
Warum dann überhaupt zwei TBlaList, anstatt das Interface direkt in die erste Deklaration? |
AW: Benamsing von Listen
Ich benutze sehr oft und gerne die Mehrzahl zur Benennung, das geht meistens sinnvoll auf.
Delphi-Quellcode:
TBla
TBlas = class(TList<TBla; |
AW: Benamsing von Listen
Zitat:
|
AW: Benamsing von Listen
Zitat:
Zitat:
|
AW: Benamsing von Listen
Zitat:
![]() Zitat:
Delphi-Quellcode:
=> Der Nutzer gibt das Interface vor, und es enthält genau so viel, wie der Nutzer braucht.
TDelphiPraxis = class(..., ITopicSource, ITopicSink, IUserRepository);
|
AW: Benamsing von Listen
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. |
AW: Benamsing von Listen
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. :stupid: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:58 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