![]() |
Interfaces -- Do and Don'ts
Hallo zusammen,
bin gerade immer wieder am überlegen wie ich gewisse Interfaces entwickle. ich meine hier keine User Interfaces, sondern die zum programmieren :) dann überlege ich mir immer, wie ich gewissen Code dann verwenden will, also in dem Fall eben die Schnittstellen und entwerfe diese dann entsprechend. meist mag das okay sein, aber ich denke, dass es bei Sowas schon ein paar "Regeln" gibt? Mit Regeln meine ich Sowas wie "halte deine Interfaces schlank". was fällt euch dies bzgl noch so ein? |
AW: Interfaces -- Do and Don'ts
Ja, da gibts ein paar:
Am bekanntesten ist wohl das ![]() Das sind jetzt die, die sich explizit auf Interfaces beziehen. Daneben gelten aber noch zig andere, die aber genauso für Klassen gelten. Soll ich da auch noch welche von Posten? Meine Liste ist lang (ich finde solche Prinzipien oder "Daumenregeln" außerordentlich interessant. Ein bisschen was dazu findest du hier: ![]() mfg Christian |
AW: Interfaces -- Do and Don'ts
Vielleicht nicht das was du hören möchtest...
Wenn ein Interface nur von einer einzigen Klasse implementiert wird und auch kein Interface für Automatisierung ist, dann sollte man kein Interface verwenden. Grund: Soll das Interface geändert werden, dann muss an mindestens zwei Stellen geändert werden - in der Deklaration des Interface und in der implementierenden Klasse. Da dies doppelte Arbeit bedeutet wird der Programmierer manchmal auf eine Änderung verzichten, obwohl die Änderung eine Verbesserung wäre. Fazit: Interfaces müssen sorgfältig geplant werden! Eine spätere Änderung kann je nach Anzahl der implementierenden Klassen recht aufwändig werden. |
AW: Interfaces -- Do and Don'ts
Zitat:
Und dann gibt es noch das Prinzip die Implementierungen abzukoppeln: ![]() Da es da in Delphi ein paar deutliche Einschränkungen gibt, kann ich mich damit als generelles Prinzip nicht wirklich anfreunden, aber es ist eigentlich sehr interessant. |
AW: Interfaces -- Do and Don'ts
Interfaces beschreiben das Verhalten sowie die Interaktion der einzelnen Subsysteme bzw. Teilen davon. Klassen implementieren dieses Verhalten.
Das ist ein gravierender Unterschied, und ich würde bei komplexen Systemen immer erst die Schnittstellen definieren und später dann das Verhalten. Alleine schon Konstrukte wie:
Delphi-Quellcode:
zeigen, wie klarer ich Systeme entwerfen kann. Denn ich beschreibe das Verhalten der einzelnen Interfaces (IListener, IRemover....) separat und kann dieses Verhalten dann meinen Klassen zuweisen.
Type
TCombinedClass = Class (TSomeBaseClass, IListener, IRemover, IPad, IPod) Das geht alleine mit Klassen nicht. |
AW: Interfaces -- Do and Don'ts
Na, das ist doch schon mal ein Anfang :thumb: Danke schon mal für die ganzen Ideen! So hatte ich mir das gedacht.
Am Schluss gießen wir dann noch ein Buch mit 1000 Seiten Umfang draus :mrgreen: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:33 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