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

1

12.04.2015, 20:44

Namespace - nur mehr Schreibarbeit?

Hallo,

ich habe überlegt für mein Projekt namespaces zu verwenden, jedoch kommt es mir nur so vor, als würde ich lediglich mehr schreiben, und durch die Verschachtelungen einfach nur mehr Einrückungen produzieren.

und wenn ich einen namespace "use" dann ist dieser gleich global verwendet.

Was sind eure Meinungen dazu?
Und vielleicht ein paar Best Practices/Anregungen zu einer schönen namespace Struktur.

2

12.04.2015, 21:00

Hallo,

ich bin wahrscheinlich auch weit entfernt von "best practice" aber mein Projekt hat mittlerweile auch schon einige Wandlungen durch.

Der eigentliche Zweck von namespaces ist, Namenskonflikte zu vermeiden, aber ich denke das ist dir bewusst.
Allerdings hat für mich (und viele andere auch) ein namespace eine semantische Bedeutung. Ich kann daran direkt erkennen, zu welchem Bereich das Objekt/Funktion gehört, das ich gerade benutze.
Z.B. habe ich in meinem Projekt den Namespace "map". Dieser Namespace enthält beispielsweise eine Klasse für den Input und den Output. Dementsprechend nutze ich map::Input, bzw map::Output.
Ich könnte natürlich auch entsprechende Namenskonventionen verwenden, wie z.B. "MapInput", aber das hat sich auf lange Sicht irgendwie als unschön heraus gestellt. Ist aber auch Geschmacksache. Jedenfalls drückt ein namespace eine Zugehörigkeit aus, und das erleichtert das Lesen teilweise schon ganz gut ;)

Was das Einrücken angeht, gehe ich da mittlerweile so vor:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
namespace Foo {
namespace Bar {
    class Klasse
    {
         // ...
    };
} // namespace Bar
} // namespace Foo


Wie man sieht, rücke ich nur den 1. namespace ein, alle darauffolgenden schreibe ich auf die selbe Höhe wie den 1.

Hoffe ich konnte dir helfen ;)
mfg

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

3

12.04.2015, 21:54

namespaces sind zur Vermeidung von Namensüberschneidungen. Das heißt man braucht keine tiefen Schachtelungen. Ein namespace für dein Projekt/deine Biblothek reichen in der Regel. Ich benutze z.B. "bb" für mein Grafikframework (BurningByte) und nutze dann kein using, auch nicht für die std.
Ich finde man erkennt daran schön wozu etwas gehört. Und der Schreibaufwand ist nicht wesentlich höher.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

12.04.2015, 21:59

Der Trend geht ohnehin dazu, dass "using namespace xy" als schlechter Stil angesehen wird. Es scheint auf den ersten Blick mehr Aufwand und mehr Noise zu sein Namespaces explizit hinzuschreiben, ist es effektiv aber nicht. Im Gegenteil, es kostet ein Augenzwinkern mehr Zeit und klärt beim Lesen sehr sauber darüber auf, was woher stammt.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

5

13.04.2015, 08:42

Wobei man auch sagen muss, das ein typisches ein Mann Projekt hier im Forum nicht wirklich namespaces braucht.

6

13.04.2015, 08:46

Selbst gigantische Frameworks wie Qt brauchen keine namespaces. Eine ordentliche Namenskonvention reicht vollkommen. Aber ich denke hier geht es auch nicht ums brauchen. Ich brauche ja auch nicht zwingend Klassen, kann ja schließlich auch alles über struct erledigen...

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

13.04.2015, 09:29

Namenskonvention? Du meinst hoffentlich nicht solche C-Präfixes wie QtFancyClass? Da wäre qt::FancyClass schon irgendwie sauberer.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

8

13.04.2015, 09:38

Doch, sowas mein ich.. Natürlich ist es schöner, aber wie man sieht, funktioniert es doch auch so. Wobei es den Qt namespace durchaus gibt, der wird aber lediglich für enums und sowas genutzt und nicht für die eigentlichen Klassen. Finde ich zwar auch ein wenig schade, aber gestört hat mich das bisher auch nicht wirklich.

9

13.04.2015, 12:12

Let's Flamewar: Das ist extrem hässlich, weil ich das hässlich finde. [le not serious]Allein schon deswegen würde ich mich eher mit der SFML als mit der SDL beschäftigen.[/le_not_serious]
Konventionen sind halt Konventionen, jeder mag was anderes und man kann sich das ganze Leben streiten, ob es schöner ist, nun so oder so zu benennen. Ich habe mir bspw. immer noch angewöhnt, weil ich es schön finde, Membervariablen mit einem Präfix zu versehen, einfach weil ich im Falle einer Schattierung this-> richtig hässlich finde.
Ich werde auch nie verstehen, wie die Leute Dinge schreiben können wie

C-/C++-Quelltext

1
2
3
4
5
if ( x == 1 ) {
    x = 2 ;
} else {
    x = 3;
}

oder gar

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
while(true){
    if(x == 1){
        break;
    } else if(x == 2){
        x = 1;
    } else if(x == 3){
        x = 2;
    } else {
        x = 3;
    }
}

Die GNU Konventionen finde ich übrigens auch Ekel erregend.
Ziemliche Geschmackssache und es gibt leider nicht das universelle Design, was jeder gerne liest und auch gut lesen kann. Wir können uns gern 73 Seiten darüber streiten, mit ständig sich wiederholenden Argumenten, die aber alle auf subjektivem Empfinden beruhen. Ich als radikaler Konstruktivist sehe das alles sowieso besonders kritisch, aber meine Güte, fuckt euch doch nicht immer wieder wegen der Designkonventionen ab. Keine Konvention zu haben und irgend so einen Mischmasch zu machen, wie etwa hier mal lower_case_only und da mal camelCase, darüber kann man sich gerne öffentlich aufregen und andere dazu bewegen, es anders zu machen, doch für alles andere gibt es einfach nicht die Lösung. (trotzdem ist Qt hässlich :D)

MfG
Check

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

10

13.04.2015, 12:17

Wer genau "fuckt" denn "ab" und wer regt sich wegen irgendwas auf? Irgendwie wirkt Dein Post bisher mit Abstand am aggressivsten ;)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige