C++ Schreib-still



  • Wikinger75 schrieb:

    //----------> Destruktoren <----------//
    

    Wie findet ihr das?

    😃



  • Wikinger75 schrieb:

    Wie findet ihr das?

    ist unfug.
    generell nett ist es, die konstruktoren, zuweisungsoperatoren destruktoren beisammen stehen zu haben, und zwar als erste publicsachen. und gleichartige sachen auch zusammen. das war's aber dann auch.


  • Administrator

    @Wikinger75,
    Ich gratuliere, du hast gerade die Büchse der Pandora geöffnet. C++ Schreibstil ist komplett umstritten, jeder haltet sein Design für das einzige und Beste und die anderen für nicht so gut oder gar schlecht 🙂
    Es ist ja auch sehr subjektiv. Hauptsache es sollte dir gefallen, du sollst damit klar kommen, es übersichtlich finden und auch den Code in einem Jahr mit dieser Beschriftung noch lesen und verstehen können. Wenn das auch noch allenfalls deine Kollegen und andere Mitarbeiter können, dann noch besser. Wobei allerdings bei Projekten sollte man meistens einen allgemeinen Standard für den Schreibstil einführen 😉

    Was ich zu deinem Stil sagen würde? Jojo, ist in Ordnung, meiner ist besser :p
    Und ich werde meinen jetzt nicht präsentieren, das führt zu nichts.

    Grüssli



  • Ich gratuliere, du hast gerade die Büchse der Pandora geöffnet.

    Hab ich doch gern gemacht^^.

    Was ich zu deinem Stil sagen würde? Jojo, ist in Ordnung, meiner ist besser :p
    Und ich werde meinen jetzt nicht präsentieren, das führt zu nichts.

    Dazu sag ich jetzt nur mal lol^^

    @drakon

    EDIT:
    Doch was. Fang keine Namen mit einem Unterstrich an. Die sind für dem Compiler reserviert.

    Danke für den Tip^^

    @thema
    Danke für euer antworten Leuts.



  • Ich persöhnlich würde die Klasse so schreiben :

    class Class_Name
    {
        private:
            //Eigenschaften
        public:
            //Methoden
    };
    
    //statt
    
    class Class_Name
    {
    private:
        //Eigenschaften
    public:
        //Methoden
    };
    


  • @Wikinger
    Zeig mal ein wenig mehr Code her. Bei dem wenigen was da steht is' ja ziemlich egal wie man's macht.

    Und achte ein wenig mehr auf die Rechtschreibung:
    Schreib still -> Schreibstil
    lessbar -> lesbar
    interesieren -> interessieren
    Und natürlich Frage, Neugier, Anfang alles gross.



  • Getter und Setter zusammen



  • Da du diese Frage stellst sind bei dir Getter und Setter sicher sowas wie im folgenden Beispiel oder?

    class Sample
    {
       int attribute;
    
       int getAttribute() const
       {
          return attribute;
       }
    
       void setAttribute( int attrib )
       {
          attribute = attrib;
       }
    };
    

    Sowas mache ich inline, also direkt in der Klassendefinition. Ansonsten finde ich die Worte Getter und Setter ungeeignet da sie irreführend sind. Man möchte das Modell das eine Klasse modelliert manipulieren und nicht die Implementierung. Daher gibt es bei mir nur drei Kategorien: public interface, protected interface und private interface.
    Implementierungsdetails versuche ich so weit wie möglich zu kapseln, das heißt im Idealfall muss ich nur ein paar private Methoden ändern. Man sollte allerdings nicht vergessen, dass die Implementierung für den Anwender durchaus wichtig sein kann was Laufzeitverhalten angeht, zum Debuggen ist es schön den Quellcode zu haben, etc.



  • Vorschlag:

    Erst die public-Sachen, dann private... Den Benutzer kann ja nur das public interessieren



  • Aquae schrieb:

    Erst die public-Sachen, dann private... Den Benutzer kann ja nur das public interessieren

    Interessant, ich mache immer privat zuerst weil den Leser des Source Codes kann ja nur die interna interessieren - das public interface steht ja in der doku 😉



  • Shade Of Mine schrieb:

    Aquae schrieb:

    Erst die public-Sachen, dann private... Den Benutzer kann ja nur das public interessieren

    Interessant, ich mache immer privat zuerst weil den Leser des Source Codes kann ja nur die interna interessieren - das public interface steht ja in der doku 😉

    Interessant, bei mir steht private am Schluss, weil das interessiert garantiert niemanden, denn da steht nur ein KlassePrivate d;* 😃

    Kommentare ala "Konstruktoren", "Destruktor", "Public Methoden" lass ich weg. Denn mit der Dokumentation der Methoden gehen diese Kommentare eh unter/machen den Header nicht übersichtlicher 😉

    Wichtiger ist mir da eher eine gewisse Konsistenz im Interface (Methodenbenennungen, Klammersetzung im Source, Einrückung (Tab vs Leerzeichen) usw)



  • Shade Of Mine schrieb:

    Aquae schrieb:

    Erst die public-Sachen, dann private... Den Benutzer kann ja nur das public interessieren

    Interessant, ich mache immer privat zuerst weil den Leser des Source Codes kann ja nur die interna interessieren - das public interface steht ja in der doku 😉

    Das sehen viele OS-Entwickler (leider) anders. Da ist das public Interface die Doku. 🤡



  • Tachyon schrieb:

    Shade Of Mine schrieb:

    Aquae schrieb:

    Erst die public-Sachen, dann private... Den Benutzer kann ja nur das public interessieren

    Interessant, ich mache immer privat zuerst weil den Leser des Source Codes kann ja nur die interna interessieren - das public interface steht ja in der doku 😉

    Das sehen viele OS-Entwickler (leider) anders. Da ist das public Interface die Doku. 🤡

    Stimmt, das kann ich auch nicht verstehen. Und ich rede hier nicht von Projekten wo der Author den Code möglichst unzugänglich machen wollte, sondern von richtigen OSS-Projekten wie XFCE.

    Was ich auch immer wieder erstaunlich finde: man findet nirgends in einem Header-File ganz oben einen Kommentar der kurz erklärt was in der Datei ist. Im Regelfall steht dort nur der Copy 'n Paste GPL Text.
    Kann ich echt nicht nachvollziehen.



  • franz schrieb:

    Interessant, bei mir steht private am Schluss, weil das interessiert garantiert niemanden, denn da steht nur ein KlassePrivate d;* 😃

    Ah und in KlassePrivate steht ein KlassePrivatePrivate* d; ?



  • Shade Of Mine schrieb:

    franz schrieb:

    Interessant, bei mir steht private am Schluss, weil das interessiert garantiert niemanden, denn da steht nur ein KlassePrivate d;* 😃

    Ah und in KlassePrivate steht ein KlassePrivatePrivate* d; ?

    Ich schätze mal, er auf das Handle-Body-Idiom anspricht, und dass außer einer Forward-Deklaration nichts von KlassePrivate im Header zu sehen ist.



  • Tachyon schrieb:

    und dass außer einer Forward-Deklaration nichts von KlassePrivate im Header zu sehen ist.

    Exakt. Aber Handle-Body-Idiom kannte ich noch nicht, mir ist das als "Pimpl" bekannt.



  • Tachyon schrieb:

    Ich schätze mal, er auf das Handle-Body-Idiom anspricht, und dass außer einer Forward-Deklaration nichts von KlassePrivate im Header zu sehen ist.

    Mir durchaus bewusst, aber das beantwortet die Frage nicht:
    man hat Klassen die private Member und Funktionen haben - zB eben die Impl-Klasse.

    Und wie sieht es dort aus?



  • Shade Of Mine schrieb:

    Tachyon schrieb:

    Ich schätze mal, er auf das Handle-Body-Idiom anspricht, und dass außer einer Forward-Deklaration nichts von KlassePrivate im Header zu sehen ist.

    Mir durchaus bewusst, aber das beantwortet die Frage nicht:
    man hat Klassen die private Member und Funktionen haben - zB eben die Impl-Klasse.

    Und wie sieht es dort aus?

    Das braucht einen (als Anwender) nicht zu interessieren. Das ist ja, neben der Reduzierung der Compilezeit, der Sinn der Sache.



  • Tachyon schrieb:

    Shade Of Mine schrieb:

    Tachyon schrieb:

    Ich schätze mal, er auf das Handle-Body-Idiom anspricht, und dass außer einer Forward-Deklaration nichts von KlassePrivate im Header zu sehen ist.

    Mir durchaus bewusst, aber das beantwortet die Frage nicht:
    man hat Klassen die private Member und Funktionen haben - zB eben die Impl-Klasse.

    Und wie sieht es dort aus?

    Das braucht einen (als Anwender) nicht zu interessieren. Das ist ja, neben der Reduzierung der Compilezeit, der Sinn der Sache.

    Dann bist du nicht besser als die Leute bei vielen OS Projekten. Denk doch auch mal an andere Programmierer (in deinem Team).



  • Tippgeber schrieb:

    Tachyon schrieb:

    Shade Of Mine schrieb:

    Tachyon schrieb:

    Ich schätze mal, er auf das Handle-Body-Idiom anspricht, und dass außer einer Forward-Deklaration nichts von KlassePrivate im Header zu sehen ist.

    Mir durchaus bewusst, aber das beantwortet die Frage nicht:
    man hat Klassen die private Member und Funktionen haben - zB eben die Impl-Klasse.

    Und wie sieht es dort aus?

    Das braucht einen (als Anwender) nicht zu interessieren. Das ist ja, neben der Reduzierung der Compilezeit, der Sinn der Sache.

    Dann bist du nicht besser als die Leute bei vielen OS Projekten. Denk doch auch mal an andere Programmierer (in deinem Team).

    Die sollten i.d.R. nicht fremden Code bearbeiten, sondern nur die gegebenen Interfaces benutzen. Für alles andere gibt es die Software Design Description. Da stehen auch Implementierungsdetails drin.


Anmelden zum Antworten