AGB  ·  Datenschutz  ·  Impressum  







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

globale Unit mit Konstanten o.ä. sinnvoll?

Ein Thema von Jumpy · begonnen am 2. Feb 2012 · letzter Beitrag vom 2. Feb 2012
Antwort Antwort
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#1

AW: globale Unit mit Konstanten o.ä. sinnvoll?

  Alt 2. Feb 2012, 13:10
aber nichts anderes habe ich aus den vorhergehenden Beiträgen entnommen.
Konstanten (und/oder ..), die zu einem Thema gehören, werden in einer (Themen-Zentral-Unit) zusammengefasst.
und zwar zusammen mit den Funktionen, Klassen, etc. und nicht getrennt davon. So gruppiert, wie man sie wiederverwenden würde. Himitsu hat ein schönes Beispiel geliefert... nachträglich in seinen Post oben reineditiert. Als ich gepostet hatte, stand das noch nicht drin. Ich wollte das nur klar machen. Zu der Zeit als ich gepostet hatte, war das noch nicht so klar in diesem Thread. Und TypeDefs.pas und Consts.pas sind leider weit verbreitet.

Ich sehe also nicht, wo wir uns widersprechen.

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.224 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: globale Unit mit Konstanten o.ä. sinnvoll?

  Alt 2. Feb 2012, 14:09
und zwar zusammen mit den Funktionen, Klassen, etc. und nicht getrennt davon.
Doch getrennt. Hatte schon öfters denn Fall das ich zwar die Konstanten benötigt habe (Für Supporttools die nur einfache Checks durchführen) aber nicht die entsprechenden Klassen.
Hätte ich alles in einer Unit wäre mein einfaches Support-Tool mehrere MB größer und würde einige andere DLL's zur laufzeit benötigen da diese (für diese Anwendungszweck) unnötigen Abhängigkeiten in die Exe kompiliert werden.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: globale Unit mit Konstanten o.ä. sinnvoll?

  Alt 2. Feb 2012, 14:17
Wenn die Klassen nicht verwendet werden, dann wird ihr Code auch nicht in die EXE/DLL/BPL einkompiliert.

Es macht diesbezüglich also keinen Unterschied, ob die Klassen in der Unit liegen oder nicht.

OK, man sollte nicht, so wie in SysUtils oder Classes alles in Initialization initialisieren, denn dann wird es dennoch eingebunden, da es ja in Initialization verwendet wird.
Dafür gibt es seit einer Weile das class constructor Create; , welches nur eingebunden und wie das Initialization aufgerufen wird, wenn die Klasse wirklich verwendet wurde.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.224 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: globale Unit mit Konstanten o.ä. sinnvoll?

  Alt 2. Feb 2012, 14:36
Wenn die Klassen nicht verwendet werden, dann wird ihr Code auch nicht in die EXE/DLL/BPL einkompiliert.

Es macht diesbezüglich also keinen Unterschied, ob die Klassen in der Unit liegen oder nicht.
Die entsprechenden Units haben initialization/finalization-Code + Feste einbindung von DLL's + Ressourcenabschnitte.

OK, man sollte nicht, so wie in SysUtils oder Classes alles in Initialization initialisieren, denn dann wird es dennoch eingebunden, da es ja in Initialization verwendet wird.
Und wenn du entsprechen anzahl von Elementen hast die zu 99% bei normalen Apps benötigt werden und zu 100% bei VCl-Form-Apps? Dann jedesmal dem Entwicker nahe legen noch x Initialization-Funktion aufzurufen? Ok, es gibt mittlerweile genügen Pattern wie man sowas besser macht, aber wieviel Stunden würde das benötigen um einen XE2-Code um solche seit Delphi 1/2 vorhandenen Codeteile fehlerfrei umzustellen. Application.Initialize und Application.MainFormVisible (?) haben schon für genügend Threads hier im Forum geführt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#5

AW: globale Unit mit Konstanten o.ä. sinnvoll?

  Alt 2. Feb 2012, 14:44
Ich glaube wir haben hier eine Form von ViolentAgreement. Mein Punkt war nur, dass man Konstanten nicht deshalb trennen soll, weil es Konstanten sind. Wenn man die Konstanten sinnvollerweise getrennt verwenden kann, kann und sollte man tatsächlich überlegen, ob man das in ne separate Unit packt. Eine Unit ist in Delphi die Einheit für die Wiederverwendung. Man sollte alles so in Units gruppieren, wie man es wiederverwenden würde.

Es gibt dabei einen Graubereich, in dem man abwägen kann, ob man jetzt in nem bestimmten Fall das besser trennt oder zusammen lässt. Was jetzt wie mit einkompiliert wird (himitsu hat da nen wichtigen Punkt erwähnt) kann bei der Überlegung ne Rolle spielen. Auf der anderen Seite spielen auch Lesbarkeit und Übersicht ne Rolle (zu lange Units sind unübersichtlich, zu viele Units sind unübersichtlich, zu viel Code, der nicht verwendet wird ist unübersichtlich). Man muss eben nen Mittelweg finden.

Also ich sage nicht, dass man auf Teufel komm raus Konstanten und Klassen zusammen lassen soll und du hast auch nie gemeint, dass man Konstanten immer in ne eigene Unit packt, egal obs Sinn macht oder nicht. Essentiell vertreten wir die selbe Position. ==> ViolentAgreement. Wir sollten uns nicht drüber streiten.

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.224 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: globale Unit mit Konstanten o.ä. sinnvoll?

  Alt 2. Feb 2012, 14:55
ViolentAgreement. Wir sollten uns nicht drüber streiten.
Ach meno. Jetzt wo ich in Fahrt komme. Musst du jetzt auf Geißler machen

Du hast es gut ausgedrückt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: globale Unit mit Konstanten o.ä. sinnvoll?

  Alt 2. Feb 2012, 15:46
Ich glaub das hast du nicht ganz richtig verstanden.

Die Klassenkonstruktoren werden automatisch aufgerufen,
aber im Gegensatz zum Initialization-Abschnitt wird die Klasse nur eingebunden wenn sie verwendet wird und ihre Initialization (class constructor) wird nur aufgerufen, wenn die Klasse eingebunden wurde.

Macht man das in dem Initialization-Abschnitt, dann wird schon alleine durch die Initialization die Klasse eingebunden, egal ob sie wo anders noch verwendet wird.

Leider gibt es sowas nicht für die Resourcen {$R ...} , welche immer gelinkt werden, egal ob sie nötig sind.
Wäre schön, wenn man diese auch irgendwo dranbinden könnte.
Ein Therapeut entspricht 1024 Gigapeut.
  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 18:05 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