Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

riCo

Treue Seele

  • »riCo« ist der Autor dieses Themas

Beiträge: 165

Beruf: Student

  • Private Nachricht senden

1

29.10.2006, 10:12

Designproblem mit namespaces

Hallo,
ich bin seit einigen Wochen dabei, mir eine eigene Engine zu schreiben. Ich habe alles in namespaces eingeteilt. Hab einen globalen namespace der Engine(diabolic), in der die Hauptfunktionen(Init, Run, ShutDown) enthalten sind. Der Rest ist in weitere Namespaces des Hauptnamespaces unterteilt. Beispielsweise math, utilities, directx usw.

Möchte ich jetzt beispielsweise ausserhalb der Engine eine Instanz von CMatrix erstellen, würde das so aussehen:

C-/C++-Quelltext

1
diabolic::math::CMatrix mProjection = diabolic::math::MatrixProjection(diabolic::utilities::DegreeToRadian(90.0f),   fAspect, 0.1f, 100.0f);


Das ganze wird dann doch recht unübersichtlich und riesig. Ok, ich könnte mit using meine in der aktuellen Funktion verwendeten Klassen, Funktionen auch direkt ansprechen, aber dann kann ich mir den namespace auch sparen?

Wie würdet ihr das machen? Bin für jeden konstruktiven Tipp dankbar.


Rico
Wir leben alle unter dem Sternenhimmel, aber wir haben nicht alle den gleichen Horizont.

T-VIRUS

Alter Hase

Beiträge: 548

Wohnort: Göttingen(West)/Nordhausen(Ost)

Beruf: Schüler

  • Private Nachricht senden

2

29.10.2006, 10:19

Hast du die Engine in C geschrieben?
Wenn du die in C++ schreibst solltest du namespaces eher weglassen und alles besser aufteilen ;)
Meine 2D/3D Engine nutzt 7 Klassen wovon 4 Abstrakt sind(Interfaces) und die anderen 3 sind auch für Spezielle Fälle.

Die erste Engine Klasse kümmert sich um Zeit und Eingabenverwaltung.
Die anderen beiden Klassen sind abgeleitet von der Engineklasse.
Diese stellen dann die 2D/3D Komponentten da.
Diese kümmern sich dann nur im 2D/3D Sound/Grafik.
Der rest muss dann nur noch vom Client/Server genutzt werden.
Aber namespaces zunutzen ist doch etwas drastisch.
Ich habe auch erst mit namespaces gearbeitet aber später merkt man ja wie verzweigt das sein kann.

Deshalb sollte man namespaces anwenden wenn es wirklich nicht anders geht oder wenn man einzelne Komponetten besser aufteilen will.
Meine Blog:)

Wer Bugs im Text findet kann sie melden, fix erscheint irgendwann :D

MFG T-VIRUS

Mirlix

Supermoderator

Beiträge: 451

Beruf: Developer Advocate

  • Private Nachricht senden

3

29.10.2006, 11:16

Der Sinn von Namespaces ist es eher dafür zu sorgen das sich Klassennamen von Libs nicht überschneiden, deshalb nehme ich immer mind. einen Namespace für größer Projekte, da es einfach übersichtlicher, weil man auf den ersten Blick gleich sehen kann woher welche Klasse, Funktion, Variablentyp kommt. Und wenn irgendwo im Quellcode einen Namespace besonders oft brauche benutzte ich einfach using. Bei dem Beispiel oben würde ich an den Anfang der File using namespace diabolic; schreiben.

Anonymous

unregistriert

4

29.10.2006, 11:25

Zitat von »"T-VIRUS"«

Hast du die Engine in C geschrieben?
Wenn du die in C++ schreibst solltest du namespaces eher weglassen und alles besser aufteilen ;)
Erzähl doch keinen Scheiss und lern lieber was über das Thema, bevor Du sowas erzählst.

T-VIRUS

Alter Hase

Beiträge: 548

Wohnort: Göttingen(West)/Nordhausen(Ost)

Beruf: Schüler

  • Private Nachricht senden

5

29.10.2006, 11:46

Zitat von »"unsigned long"«

Zitat von »"T-VIRUS"«

Hast du die Engine in C geschrieben?
Wenn du die in C++ schreibst solltest du namespaces eher weglassen und alles besser aufteilen ;)
Erzähl doch keinen Scheiss und lern lieber was über das Thema, bevor Du sowas erzählst.


Ich weiß wozu man namespaces nutzt!
Ich nutze sie nur selten. Warum sollte ich sie auch so oft nutzen wenn ich nicht muss?
Meine Blog:)

Wer Bugs im Text findet kann sie melden, fix erscheint irgendwann :D

MFG T-VIRUS

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

6

29.10.2006, 12:01

Bei 7 Klassen machen Namenspaces sicher keinen Sinn. BoB hat beinahe 700. Ich fände es aber durchaus interessant, konstruktive Beiträge zu hören wie man namespaces nutzt um die "Kosten" (Aufwand, IMO schlechter lesbarer Code) zu minimieren und den Nutzen (z.B. Modularisierung?) zu maximieren. BoB nutzt als fast einzige "Struktur" oberhalb von Klassen nur MSVC Projekte und das funktioniert eigentlich ganz gut.
"Games are algorithmic entertainment."

Anonymous

unregistriert

7

29.10.2006, 12:05

Zitat von »"T-VIRUS"«

Zitat von »"unsigned long"«

Zitat von »"T-VIRUS"«

Hast du die Engine in C geschrieben?
Wenn du die in C++ schreibst solltest du namespaces eher weglassen und alles besser aufteilen ;)
Erzähl doch keinen Scheiss und lern lieber was über das Thema, bevor Du sowas erzählst.


Ich weiß wozu man namespaces nutzt!
Erzähl doch mal, würde mich mal interessieren. Nach Deiner Aussage kommen die ja aus C.

Firefly

Alter Hase

Beiträge: 484

Wohnort: Irgendwoundnirgendwo

  • Private Nachricht senden

8

29.10.2006, 12:15

wie wärs mit

C-/C++-Quelltext

1
using namespace ???;

T-VIRUS

Alter Hase

Beiträge: 548

Wohnort: Göttingen(West)/Nordhausen(Ost)

Beruf: Schüler

  • Private Nachricht senden

9

29.10.2006, 12:41

Zitat von »"unsigned long"«

Zitat von »"T-VIRUS"«

Zitat von »"unsigned long"«

Zitat von »"T-VIRUS"«

Hast du die Engine in C geschrieben?
Wenn du die in C++ schreibst solltest du namespaces eher weglassen und alles besser aufteilen ;)
Erzähl doch keinen Scheiss und lern lieber was über das Thema, bevor Du sowas erzählst.


Ich weiß wozu man namespaces nutzt!
Erzähl doch mal, würde mich mal interessieren. Nach Deiner Aussage kommen die ja aus C.


Nein ich nah am ob er sie in C schreibt da er soviel mit namespaces arbeitet.
Den n C++ kann man sowas auch bei wenigen Klassen, wie in meinem Fall, auch einfach in Klassen kapseln ;)
Aber da er immerhin über 700 Klassen hat wäre es natürlich besser namespaces zunutzen.
Meine Blog:)

Wer Bugs im Text findet kann sie melden, fix erscheint irgendwann :D

MFG T-VIRUS

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

10

29.10.2006, 12:46

Zitat von »"Firefly"«

wie wärs mit

C-/C++-Quelltext

1
using namespace ???;


Using namespace solltest du tunlichst vermeiden, weil es den Sinn von Namespaces (Nahmenskonflikte vermeiden) untergräbt...

Zitat von »"T-VIRUS"«

Nein ich nah am ob er sie in C schreibt da er soviel mit namespaces arbeitet.


C kennt keine Namespaces. Daher erübrigt sich wohl deine Annahme...

grüße
@D13_Dreinig

Werbeanzeige