Welcher Programmierstill ist in C++ üblich?



  • ruebe schrieb:

    Ich stosse auf viele unterschiedliche Programmierstiele...

    Wie schon erwähnt sind die von dir Aufgeführten Programmstile wenn überhaupt Glaubensfragen (mit Beachtung des Hinweises das using namespace im Header tabu ist). Wichtiger ist vielmehr der Stil der sich auf die Lesbarkeit und Wartung auswirkt. Ob man z.B. unterschiedliche Scopes sinnvoll und sichtbar voneinander abgrenzt (Thema Klammersetzung), ob Bezeichner sprechend gewählt wurden...

    Auch hier gibt es unterschiedliche Stile. Es gibt keine absolute Empfehlung, sofern es sinnvoll und zumindest Projektbezogen möglichst einheitlich bleibt (oder wenn es im Projekt nicht abgesprochen ist das man zumindest versucht wenigstens pro Übersetzungseinhait einheitlich zu bleiben).

    cu André



  • asc schrieb:

    ob Bezeichner sprechend gewählt wurden...

    Aja, es ist wohl das grausamste, wenn man immer wieder Sorcen à la

    int z, n, fw, d;
    

    lesen muss. Die Begründung ist zumeist Tippfäule. Mein Physikprofessor sagte dann immer: "Screibarbeit ist keine Arbeit!"

    greetz, Swordfish



  • Schreibarbeit war und ist für Theologen.



  • Fellhuhn schrieb:

    Schreibarbeit war und ist für Theologen.

    🙄



  • Danke für die schnellen Antworten!
    Das using namespace schlecht ist hab ich schnon mal gelesen. Leider wird das in meinem Buch so gemacht.
    http://www.c-plusplus.net/cms/modules.php?op=modload&name=mbBooks&file=index&func=isbn&isbn=3826615344

    Wenn ich das richtig sehe, gibt es 3 Möglichkeiten mit namespace std umzugehen.

    1.Version
    //
    using namespace std;
    //
    cout << "Ende" << endl;

    2.Version
    //using namespace sei nicht declariert
    std::sout << "Ende" << std::endl;

    3.Version
    //using namespace sei nicht dec.
    using std::cout;
    using std::endl;
    cout << "Ende" << endl;

    Version 1, wird von mir ab jetzt als Tabu angesehen.
    Bleiben nur noch 2 u. 3. Welche soll ich wählen nach eurer Meinung verwenden und ist es Empfehlenswert, die Aufgaben in einem Buch, mit der gewählten Version zu lösen, oder stur nach dem Buch zu arbeiten?



  • Öhm, da hast du was falsch verstanden bzw. nicht aufmerksam gelesen! using namespace an sich ist nich tabu. Sondern in einem Header tabu!



  • Soll das heisen das ich using namespace nicht gleich nacch #include bringen soll sondern erst im Block?

    z.b so[cpp]
    #include <iostream>

    int main()
    { using namespace std;

    //

    }



  • Glaubensfrage. Solange Du weißt, was du tust, ist auch gegen ein using namespace std; nichts einzuwenden. Kommt auch auf die Größe des Projekts an.

    greetz, Swordfish



  • Hallo

    Du sollst using namespace nicht in headern also hpp oder h Dateien verwenden. Du scheinst aber noch ganz am Anfang mit c++ zu sein und solltest vielleicht erstmal ein paar Grundlagen lernen.

    chrische



  • Naja Seite 100/800 😃 (Das meist war das Inhaltsverzeichniss 😉

    Ich sage Danke an alle. Werde mich hier im Forum anmelden, da es sicher noch etliche unklarheiten geben wird.

    beste grüße ruebe



  • ruebe schrieb:

    Soll das heisen das ich using namespace nicht gleich nacch #include bringen soll sondern erst im Block?

    Nein, das heißt das man - vorausgesetzt man arbeitet wie es in C und C++ eigentlich üblich ist mit getrennter Deklaration (.h / Header) und Definition (.cpp / Source) - using namespace niemals im Header einsetzt.

    Unvollständiges Minibeispiel (ohne Includeguards...)

    // A.h

    // Hier kein using namespace
    #include <string>
    class A {
      void foo(std::string const & text)
    };
    

    // A.cpp

    #include "a.h"
    // Wogegen hier using namespace erlaubt ist
    using namespace std;
    
    void A::foo(string const & text)
    {
      //...
    }
    

    cu André
    P.S: Es kann sein das du die Trennung noch nicht im Buch beschrieben bekommen hast...



  • Jetzt check ichs. Hab den Begriff Header falsch aufgefasst.



  • Kleine Erweiterung:
    A.cpp:

    #include "a.h"
    // hier bitte AUCH kein using namespace
    #include "b.h"
    
    // erst hier nachdem die letzte header inkludiert wurde...
    // ...hier ist using namespace OK
    using namespace std;
    
    void A::foo(string const & text)
    {
      //...
    }
    

    A.h:

    // hier kein using namespace
    #include <string>
    // hier AUCH KEIN using namespace
    class A {
      void foo(std::string const & text)
      {
        // hier isses OK, weil's nur innerhalb der funktion "wirksam" ist
        using namespace std;
        // ...
      }
    }; 
    // hier AUCH KEIN using namespace
    

Anmelden zum Antworten