AGB  ·  Datenschutz  ·  Impressum  







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

Interface-Unterstützung

Ein Thema von stahli · begonnen am 2. Sep 2017 · letzter Beitrag vom 25. Mai 2018
Antwort Antwort
Seite 4 von 7   « Erste     234 56     Letzte »    
TiGü

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

AW: Interface-Unterstützung

  Alt 7. Nov 2017, 15:41
Mein Leidensdruck ist dabei extrem hoch, da bei jedem neuen Property in den Interfaces dieser ganze Mist immer wieder genau gleich in allen benutzenden Klassen durchgeführt werden muss.
Kannst du dazu ein Beispiel aus der Praxis liefern?
Wenn ich bspw. ein Interface habe und drei verschiedene Klassen, die dieses Property implementieren müssen und das ggf. sogar auf gleicher Art und Weise, dann mach ich mir doch eine Basisklasse dazu und frühstücke das da ab.
Oder wenn sich das nur in einer von drei Klassen verschieden verhalten sollte, dann mach ich das auch in die Basisklasse und und mache Setter und Getter virtual und überschreibe in den richtigen Klassen entsprechend.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#32

AW: Interface-Unterstützung

  Alt 7. Nov 2017, 16:23
Ich arbeite quasi nur noch mit Interfaces und meine Klassen implementieren jeweils sehr unterschiedliche (je nach erforderten Funktionalitäten).
Eine Interfaceänderung wirkt sich somit auf viele unterschiedliche Klassen aus.

Der maßgebliche Grund für meinen Leidensdruck ist allerdings, dass ich nicht verstehe, dass man als Hightec-Softwareschmiede über die Jahre so etwas nicht mal vernünftig unterstützt.

Wenn ich eine Kundenverwaltung schreibe, achte ich doch auch darauf, dass der Anwender die Kundendaten nicht 3 mal eingeben muss und das Programm Fehlermeldungen wirft, wenn die 3 Datenbestände nicht zusammenpassen.

Ok, die Pascal-Struktur neu zu entwickeln wäre überzogen und ist nicht notwendig, aber zumindest sollte die IDE einem die Redundanzen etwas abnehmen und die Units vernünftig sortieren.
Mich regt das wirklich auf und hier könnte doch eigentlich relativ leicht Abhilfe geschaffen werden.

Mir fällt das natürlich schwerer als einer Hightec-Softwareschmiede, aber ich versuche das mal...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#33

AW: Interface-Unterstützung

  Alt 7. Nov 2017, 16:31
Irgendwie habe ich es noch nicht verstanden,
was fehlt Dir im Modelmaker Code Explorer?
Ich habe bis jetzt Deinen Flow bei Änderungen nicht verstanden.
Wahrscheinlich bin ich zu doof.....
Fritz Westermann
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Interface-Unterstützung

  Alt 7. Nov 2017, 16:32
Wahrscheinlich bin ich zu doof.....
Dann wären wir schon zwei
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#35

AW: Interface-Unterstützung

  Alt 7. Nov 2017, 16:39
Dann wären wir schon zwei
Irgendwie beruhigt mich das
Fritz Westermann
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#36

AW: Interface-Unterstützung

  Alt 7. Nov 2017, 17:01
Den MMX hatte ich getestet. Der war mir zu groß und umständlich.
Vor allem fand ich die Implementation von Interfaces nicht hilfreich.

Kann natürlich mein Fehler gewesen sein.

Kann mal jemand ein kurzes Video mit folgendem Inhalt erstellen?
--> Unit mit 2 Interfaces
- Intf1 mit zwei Propertys MyInteger und MyBoolean erzeugen (read+write)
- Intf2 mit zwei Propertys MyString und MyByte erzeugen (read+write)

--> Unit mit 3 Klassen
- Class1(TInterfacedObject, Intf1)
- Class2(TInterfacedObject, Intf2)
- Class3(TInterfacedObject, Intf1, Intf2)

Für die Getter und Setter muss natürlich ein privates Feld in den Klassen erstellt und verwendet werden.

Es wäre mal interessant, wie weit MMX einen da unterstützt.
Nach meiner bisherigen Einschätzung wird das trotzdem noch eine Schreib- oder Kopierorgie.


Entweder überzeugt mich das Video dann und ich stoppe mein Tool oder ich baue es mal weiter aus und zeige später mal, warum ich diesen Ansatz besser finde.



So ungefähr müsste man mit meinem Tool nur noch schreiben:

Delphi-Quellcode:
---> InterfaceUnit

Intf1 = Interface
prop MyInteger:Integer;
prop MyBoolean:Boolean;
end;

Intf2 = Interface
prop MyString:String;
prop MyByte:Byte;
end;

---> KlassenUnit

Class1 = class(TInterfacedObject, Intf1)
end;

Class2 = class(TInterfacedObject, Intf2)
end;

Class3 = class(TInterfacedObject, Intf1, Intf2)
end;

Alles andere würde automatisch ergänzt werden.
Ebenso nachträgliche Änderungen in den Interfaces, wenn z.B. dort der Typ von einem Property geändert wird oder Parameter von var in const usw.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli ( 7. Nov 2017 um 17:08 Uhr)
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#37

AW: Interface-Unterstützung

  Alt 7. Nov 2017, 17:24
Irgendwie habe ich es noch nicht verstanden,
was fehlt Dir im Modelmaker Code Explorer?
Ich habe bis jetzt Deinen Flow bei Änderungen nicht verstanden.
Wahrscheinlich bin ich zu doof.....
Ein STRG + C für Interfaces, das bei

property Foo: Integer; die entsprechenden Methoden anlegt - ist ja wirklich nicht die Welt.

Und STRG + C ist einfach schneller als im CodeExplorer, den ich auch installiert habe, den AddProperty Dialog aufzurufen und dort die Daten einzugeben - so ganz trivial ist der Dialog auch nicht Und sollte es eine vergleichbare Möglichkeit im MM Codeexplorer geben die ich bisher nur noch nicht gefunden haben, dann Asche auf mein Haupt....
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Interface-Unterstützung

  Alt 7. Nov 2017, 19:11
Nach meiner bisherigen Einschätzung wird das trotzdem noch eine Schreib- oder Kopierorgie.
Das sehe ich zwar anders, aber deine Anforderungen sind schon sehr speziell (so speziell zumindest, daß ich sie zumindest bisher noch nicht vermisst hätte) und da ist natürlich ein speziell darauf abgestimmtes Tool nicht zu toppen.

Nur mal als schnelle Idee, wie ich etwas vergleichbares mit MMX realisieren würde (für ein Video habe ich gerade keine Zeit). Ich würde halt ganz anders anfangen. Ausgehend von zwei leeren Units:
  • die Klasse anlegen (MMX-Dialog, Code-Template oder von Hand)
  • die Properties in den Klassen anlegen (der MMX-Dialog erlaubt bereits unterschiedliche, auch selbst definierte Implementierungen)
  • die Properties in MMX markieren
  • über (MMX-)Refactorings - Extract Interface das Interface erzeugen
  • den Interfacenamen dabei gleich in die Zwischenablage kopieren
  • und nach einem Komma in die Klassendeklaration kopieren
  • das Interface per MMX-Cut/Paste in die andere Unit verlagern
  • falls noch nicht geschehen die andere Unit per Ctrl-U (MMX) oder Alt-F11 (IDE) usen

Bei geschickt gewählten Default-Einstellungen sind in den MMX-Dialogen kaum Eingaben nötig (Name von Klasse/Property/Interface, Typ des Properties geht in der Regel per Auto-Complete mit 1-2 Tasten). Das sind vergleichbar viele (eher weniger) Eingaben als in deinem Beispiel zu machen sind. Allerdings kann man in beiden Fällen mit Code-Templates eventuell noch was rausholen. Es gibt ein Copy/Paste (Name des Interfaces) und ein Cut/Paste (Interface in andere Unit) für jedes Interface.

Eine automatische Synchronisierung der Parameter ist dort leider nicht vorgesehen. Allerdings genügt hier analog zum Beschriebenen ein simples Copy/Delete/Paste der betroffenen Properties bzw. Methoden um das wieder zu synchronisieren. Das ist natürlich nicht so schnell und komfortabel wie deine Speziallösung, aber es ist ja auch nicht gerade und ausschließlich dafür gedacht. (Was nicht heißt, daß es sowas in Zukunft nicht bekommen könnte)

Aber natürlich bleibt dein Tool für dich immer die bevorzugte Wahl. Schließlich baust du es ja auch genau nach deinen Bedürfnissen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
TiGü

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

AW: Interface-Unterstützung

  Alt 8. Nov 2017, 07:47
Meiner Meinung nach wäre es viel sinnvoller, wenn es ein Tool geben würde, dass automatisch vergessende Semikolons hinter die Zeilen tackert.
Das regt mich immer maßlos auf! Schnell was hingeschrieben, Strg + F9 und Bumm:
"Nak nak nak, Sie haben ein Semikolon vergessen...ich als Compiler finde das voll doof...ich könnte zwar selber eins hinbasteln, aber ich will Sie als Programmierer noch ein bissel gängeln!".
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: Interface-Unterstützung

  Alt 8. Nov 2017, 10:54
Meiner Meinung nach wäre es viel sinnvoller, wenn es ein Tool geben würde, dass automatisch vergessende Semikolons hinter die Zeilen tackert.
Das regt mich immer maßlos auf! Schnell was hingeschrieben, Strg + F9 und Bumm:
"Nak nak nak, Sie haben ein Semikolon vergessen...ich als Compiler finde das voll doof...ich könnte zwar selber eins hinbasteln, aber ich will Sie als Programmierer noch ein bissel gängeln!".
Es soll Programmiersprachen geben, wo man gar keine Semikolons machen muss, weil der Compiler schlau genug ist, zu erkennen, wo Anweisungen enden.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 7   « Erste     234 56     Letzte »    


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 02:04 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