Konstanten gruppieren?



  • Hallo,

    ich habe viele Konstanten in meinem Programm. Nun hängen jeweils welche thematisch zusammen. Kann ich mir dazu jeweils einen thematischen namespace anlegen, so dass die Referenzierung nachvollziehbarer wird/bleibt?

    Unter Umständen haben die Konstanten, welche global zugreifbar sein sollen auch den gleichen Namen.

    Oder wäre es besser, ein globales Objekt mit entsprechenden Methoden/öffentlichen Attributen jeweils anzulegen?

    Andere/bessere Ideen?

    Danke, Mat.



  • Also es gibt da zwei Möglichkeiten:

    1. In eigene Namespaces gruppieren. Wenn die Werte jedoch zu einer bestimmten Klasse/Klassenhirarchie gehören, würde ich auch direkt in die Klasse setzen, als Public und Static.

    2. Wenn es int-Werte sind, kann man diese auch in ein enum stecken, hat sogar den Vorteil der zusätzlichen Typsicherheit, die du mit Variante 1 nicht erreichen kannst.

    namespace bla
    {
        enum FlugzeugGroesse
        {
            klein, gross, mittel;
        };
    }
    

    Wenn es bistimmte Werte sein sollen:

    namespace bla
    {
        enum FlugzeugGroesse
        {
            klein = 100, gross =1243 , mittel = 2123;
        };
    }
    

    Naja, mit Strings oder sowas kann man enum nicht benutzen, dann geht nur Variante 1.



  • vielleiht 'enum' ?

    Meep Meep



  • kommt auch auf den context an ...

    enums statt konstanten wenns geht isst schon mal gut ...

    noch weiter gehen kannst wenn die ver und bearbeitung der constanten in ne zentrale klasse auslagern kannst ....
    dann kannst die konstanten / enums auch in die klasse werfen

    class Color
    {
    public: 
        enum ColorT
        {
            CL_BLACK = 0x000000;
            CL_WHITE = 0xFFFFFF;
            // .... und noch viele farben mehr 
        };
        // und vielleicht noch paar tolle hilfsfunktionen
        // die mit farben zu tun haben und dann hier hergehoeren ... 
    };
    
    class X 
    {
    public:
        void setColor(Color::ColorT color); 
        // ... 
    };
    

    Ciao ...



  • Danke,

    als sollte ich enum nutzen, wenn ich (nur) ganzzahlige Konstanten habe.

    Da ich bei mir aber auch doubles habe und ich gern eine konsequente Lösung habe, werde ich wohl die Sache mit den Namespace machen oder respektive in eine Klasse.


Log in to reply