AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Frame: Button OnClick handler manchmal nicht zugewiesen?

Frame: Button OnClick handler manchmal nicht zugewiesen?

Ein Thema von TurboMagic · begonnen am 12. Mai 2022 · letzter Beitrag vom 19. Mai 2022
Antwort Antwort
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.307 Beiträge
 
Delphi 12 Athens
 
#1

AW: Frame: Button OnClick handler manchmal nicht zugewiesen?

  Alt 18. Mai 2022, 13:24
Weiterer Bonus: Man kann die Frame-Units in die Uses-Clause des Implementation Teil verlagern oder gleich die Frames über ein Factory-Pattern erzeugen. Das reduziert den Dependency-Wert oft gewaltig und sorgt nebenbei für eine strukturiertere Architektur.
Sollte man nicht units im Implementation-Teil vermeiden. Die Gefahr der zirkulären Abhängigkeit wird damit reduziert, wenn man die Units im Interface-Abschnitt auflistet.



Siehe auch https://docwiki.embarcadero.com/RADS..._Units_(Delphi)

Zitat:
To reduce the chance of circular references, it's a good idea to list units in the implementation uses clause whenever possible. Only when identifiers from another unit are used in the interface section is it necessary to list that unit in the interface uses clause.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Frame: Button OnClick handler manchmal nicht zugewiesen?

  Alt 18. Mai 2022, 14:36
Sollte man nicht units im Implementation-Teil vermeiden. Die Gefahr der zirkulären Abhängigkeit wird damit reduziert, wenn man die Units im Interface-Abschnitt auflistet.
Davon bin ich ein strikter Gegner! Das ist zwar einfacher für den Entwickler, unterstützt aber meiner Meinung nach nur die Faulheit nicht über eine entsprechende Architektur nachdenken zu müssen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Frame: Button OnClick handler manchmal nicht zugewiesen?

  Alt 18. Mai 2022, 14:56
Abgesehen davon sagt das Zitat das genaue Gegenteil von dem was es meint...
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Frame: Button OnClick handler manchmal nicht zugewiesen?

  Alt 18. Mai 2022, 14:59
Ja, ich versuche auch immer ALLES, was möglich ist, im Interface anzugeben.
Da ist dann auch die Reihenfolge sichergestellt.

Es gibt aber auch Kollegen, die sind vehement der Meinung, dass man ALLES was möglich ist, in die Implementation machen MUß!


Im Interface wird ALLES so wie es da steht, in der Reihenfolge vor der eigenen Unit geladen/initialisiert.
Wenn etwas in den eingebundenen Units geladen wird, dann das natürlich entsprechend auch wieder zuerst.

In Implementation kann unterliegt die Reihenfolge im USES dem Gutdünken des Compilers und es kann sogar passieren, dass Units erst nach dem eigenen Initialization, bzw. nach eigenen Class-Constructor's vorhanden ist.
Greift man also im Initialization/ClassConstructor auf eine Variable/Funktion zu, kann es sein, das diese noch garnicht initialisiert ist, wenn die Unit im Implementation steht ... wenn in Interface, dann ist es immer schon da.
Genau andersrum beim Finalizaition, da kann es, wenn im Uses der Implementation, dann schon weg sein, bevor das eigenen Finalization/ClassConstructor anläuft.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (18. Mai 2022 um 15:04 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Frame: Button OnClick handler manchmal nicht zugewiesen?

  Alt 18. Mai 2022, 15:02
Es gibt aber auch Kollegen, die sind vehement der Meinung, dass man ALLES was möglich ist, in die Implementation machen MUß!
Genau! Und das ist auch richtig
Damit verbirgt man die Details der Implementierung, die ja niemanden was angehen.

Natürlich gibt es keine Regel ohne Ausnahme, aber für mich gehört nur das in den Interface-Teil was da unbedingt nötig ist. (We agree to disagree)
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Frame: Button OnClick handler manchmal nicht zugewiesen?

  Alt 18. Mai 2022, 15:12
Zitat:
Damit verbirgt man ...
Security through Obscurity


Im Idealfall hab ich so aber auch nur ein Uses, was ich irgendwie schon bissl übersichtlicher empfinde.


Im Interface ist es immer in der selben Reihenfolge.
In der Implementation könnte, selbst bei unverändertem Code, bei jedem Compilieren was in einer anderen Reihenfolge geladen werden, was bei einer Fehlersuche besonders viel Spaß macht.

Aber das Wichtigste, im Interface habe ich nie "ausversehn" mal unbemerkte Kreisreferenzen drin ... in der Implementation fällt dir das nie auf,
außer da unten steht nur das drin, was absichtlich dort steht, wegen einer bekannten Kreuz-/Kreisreferenz.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (18. Mai 2022 um 15:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Frame: Button OnClick handler manchmal nicht zugewiesen?

  Alt 18. Mai 2022, 16:00
Security through Obscurity
Eher Information hiding.

In der Implementation könnte, selbst bei unverändertem Code, bei jedem Compilieren was in einer anderen Reihenfolge geladen werden
Das kann nur bei zyklischen Abhängigkeiten passieren, aber die lassen wir ja nicht zu.

im Interface habe ich nie "ausversehn" mal unbemerkte Kreisreferenzen drin ... in der Implementation fällt dir das nie auf,
Das ist genau das obige Argument mit der Faulheit. Bei einer sauberen Architektur entstehen erst gar keine Zyklen und zur Sicherheit gibt es ja Code-Checks, die das spätestens beim Einchecken monieren.

Aber ich denke, das Thema ist zumindest hier nun ausreichend diskutiert. Wir können das gerne an anderer Stelle vertiefen wenn du möchtest.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.307 Beiträge
 
Delphi 12 Athens
 
#8

AW: Frame: Button OnClick handler manchmal nicht zugewiesen?

  Alt 18. Mai 2022, 17:28
Aber das Wichtigste, im Interface habe ich nie "ausversehn" mal unbemerkte Kreisreferenzen drin ... in der Implementation fällt dir das nie auf, außer da unten steht nur das drin, was absichtlich dort steht, wegen einer bekannten Kreuz-/Kreisreferenz.
Genau so. Das hat auch nichts mit Faulheit zu tun. Es ist lediglich eine Hilfe, das diese "schrecklichen" zirkulären Referenzen sich nicht einschleichen.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
627 Beiträge
 
Delphi XE6 Enterprise
 
#9

AW: Frame: Button OnClick handler manchmal nicht zugewiesen?

  Alt 18. Mai 2022, 14:41
Sollte man nicht units im Implementation-Teil vermeiden. Die Gefahr der zirkulären Abhängigkeit wird damit reduziert, wenn man die Units im Interface-Abschnitt auflistet.
Nee genau andersherum. Steht da doch auch:

Zitat:
To reduce the chance of circular references, it's a good idea to list units in the implementation uses clause whenever possible. Only when identifiers from another unit are used in the interface section is it necessary to list that unit in the interface uses clause.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 03:07 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