Namensräume in Delphi

8

Gibt es praktische Vorteile bei der Verwendung von langen Dateinamen wie MyLib.MyUtils.pas oder ist es nur eine Art Einheitennamens-Präfix?

    
kludg 20.01.2010, 09:12
quelle

3 Antworten

13

Namespaces sind wie alle Bezeichner dazu gedacht, sich zu organisieren.

Wenn Sie sie nutzen, profitieren Sie nur, wenn sich Ihr Projekt besser organisiert. Diese höchst subjektive Angelegenheit (es gab 'Kriege' sogar mit den einfachsten Namenskonventionen!), So unmöglich, wirklich zu antworten.

Hier finden Sie einige Dokumentationen zur Funktionsweise von Namespaces Delphi.

Beachten Sie, dass "echte" Namespaces (wo mehr als eine generische DLL zum selben Namespace beitragen kann; so funktionieren Namespaces in der .NET-Welt) in Delphi nicht möglich: Sie könnten den BPL-Weg gehen, aber das ist nicht das gleiche wie eine 'generische DLL'. Dies ist keine Einschränkung von Delphi selbst, sondern die Art, wie native DLLs in Windows 'arbeiten'.

- Jeroen

    
Jeroen Wiert Pluimers 20.01.2010, 10:40
quelle
2

Siehe:

Warum Verfügt Delphi (dcc32.exe) über eine Option zum Festlegen eines "Namespace-Suchpfads"?

Namespaces in Delphi werden vom Compiler unterstützt, daher hat der Punkt in den Unit-Namen eine besondere Bedeutung. Sie können den vollqualifizierten Namen der Datei verwenden, oder Sie können einen 'Verknüpfungsstil' für den Dateinamen verwenden, wenn die Option dcc32.exe ordnungsgemäß eingerichtet ist.

Sie könnten also auch

schreiben %Vor%

um den vollständigen qualifizierten Namen zu vermeiden

%Vor%

Disclaimer: derzeit ist das alles Theorie, aber ich werde Namespaces in einigen Projekten in naher Zukunft verwenden

Für eine noch bessere IDE-Unterstützung können Sie in QualityCentral für diesen Feature-Vorschlag wählen:

Visualisieren Sie die Unit Namespaces-Hierarchie in der IDE

    
mjn 20.01.2010 11:17
quelle
0

Ich habe diese Antwort als Antwort auf die Kommentare und mein offensichtliches Missverständnis der Frage bearbeitet.

Der einzige praktische Vorteil, den ich bei der Verwendung von Unit-Namen sehe, ist, dass die IDE die Einheiten besser sortiert als ohne das Präfix "Namespace". Ich würde stattdessen lieber andere Ordner verwenden.

In einigen Fällen kann es sinnvoll sein - wegen Namenskollisionen. Du könntest zum Beispiel eine Einheit MyLib.Utils und eine Einheit MyOtherLib.Utils haben. Das kann tatsächlich einige Verwirrung vermeiden (sowohl für die IDE als auch für dich selbst).

Sie können auch einen Namespace mit einer abstrakten Klasse mit statischen Klassenmethoden simulieren:

%Vor%     
jpfollenius 20.01.2010 09:17
quelle

Tags und Links