Werden bei euch Kommentare gemacht?



  • Hallo Leute,

    wart Ihr schonmal bei einer SW Firma, wo es mehrere 100.000 Zeilen C++ Quellcode gegeben hat, aber nicht eine Zeile Duko? Ich muß überall durchdebuggen und mir den Source anzusehen. Null Hilfe, keine Übersicht, ...



  • das program könnte von mir sein

    ich bracuhe kom. nicht,

    komms., mache ich nur hier im forum,

    und zwar blöde.



  • Gut gebrüllt.
    Aber sag mal, wurdest Du vor ein paar Monaten zufällig von einer Ostdeutschen SW Schmiede gegangen worden? Wenn ja, gib mir mal Deine Privatadresse... ich möcht Dich gern erwürgen 🤡



  • Dokuman schrieb:

    wart Ihr schonmal bei einer SW Firma, wo es mehrere 100.000 Zeilen C++ Quellcode gegeben hat, aber nicht eine Zeile Duko? Ich muß überall durchdebuggen und mir den Source anzusehen. Null Hilfe, keine Übersicht, ...

    100000 zeilen ohne kommentar 😕
    also das schlimmste was ich kenne sind irgendwelche spaghetticodes für'n linux-kernel, aber selbst da taucht alle 300 zeilen ein kommentar auf.

    btw: wenn du sowas zerpflücken willst, kann ich dir das hier empfehlen: http://www.scitools.com/ucpp.html?id=4af82acb5f120977850f2359c68b4c29
    (gibbet 'ne testversion die 30 tage läuft)



  • Guter Code brauch keine Kommentare! 😃

    OK, ich habe mich angewöhnen müssen Kommentare rein zuschreiben, aber ich mache das nur immer zu Klassen oder Methoden. Ich mache SEHR selten Kommentare zu Codezeilen in Methoden.

    Ich denke mir nämlich, wenn ich sowas habe:

    int add(int a, int b)
    

    WAS soll ich da bitte kommentieren? Etwa so:

    // Addiert a und b zusammen und gibt die Summe zurück
    int add(int a, int b)
    

    Bei mir im Team gibt es welche die machen das so! Die gehen sogar noch weiter und kommentieren fast jedes if usw. 😮

    DANN versteh ich nichts mehr, weil ich nur noch Kommentare sehe anstatt Code.

    Jetzt könnt ihr und auch meine KOllegen sage: hey, das da oben sind aber nur einfache Funktionen. Die würd ich auch nicht kommentieren.

    Ha! Aber WIE kompliziert kann/darf denn so eine Funktion werden??? Sobald eine Funktion zu viel macht, sollte man sie vereinfachen, so das man schon am Namen sehen kann, WAS sie macht.

    Das ist der Horror:

    // Addiert und ändert den Parentnode von Node und gibt eine Kopie zurück,
    // braucht man weil bla bla bla, damit es in Klasse bla bla auch funktioniert
    Node addAndChangeFromParentNode(Node node)
    

    Könnte ich verrückt werden!!! 😡 Hab ich schon mehrmals gesehen, das eine Funktion tausend Sachen auf einmal macht. Anstatt daraus drei Funktionen zu machen. Und das mit dem Parent Node ist der Schwachsinn, anstatt das der User der Funktion gleich den Parentnode selbst übergibt.

    Auf Kommentare kann man verzichten. Gebe aber auch zu, das ein paar Kommentare manchmal nicht schaden können.



  • Artchi schrieb:

    Auf Kommentare kann man verzichten.

    ok, dann mal ein beispiel. was schätzt du, macht diese funktion (alle kommentare entfernt)

    void PPR_TX_Machine (void)
    {
       switch (PPR_send_status)
       {
           case PPR_SEND_IDLE:
             if (DATA_ACK_NOT_SET)
             {
               int f = FIFO_Read (&PPR_send_fifo);
               if (FIFO_ERROR == f)
                  break;
               WRITE_DATA_LINES ((UINT8)f);
               DATA_VALID_ON;
               PPR_timeout = PPR_GET_COUNTER_VALUE() + 5000;
               PPR_send_status = PPR_SEND_WAIT_ACK;
             }
             break;
    
           case PPR_SEND_WAIT_ACK:
             if (DATA_ACK_SET)
             {
                DATA_VALID_OFF;
                PPR_timeout = PPR_GET_COUNTER_VALUE() + 5000;
                PPR_send_status = PPR_SEND_WAIT_NOACK;
             }
             else if (PPR_timeout < PPR_GET_COUNTER_VALUE())
             {
                DATA_VALID_OFF;
                PPR_send_status = PPR_SEND_IDLE;
             }
             break;
    
          case PPR_SEND_WAIT_NOACK:
             if (DATA_ACK_NOT_SET || (PPR_timeout < PPR_GET_COUNTER_VALUE()))
                PPR_send_status = PPR_SEND_IDLE;
             break;
       }
    }
    


  • Ok, war ein bißchen mißverständlich. IM Code sind schon ein paar Kommentare. Es gibt aber kein Dokument über Aufgabe oder Codeaufteilung. Ich habe hier bestimmt an die 100 dsp Projekte und alle gehören zu einem großen Softwareprojekt. Seit Monatg bin ich damit beschäftigt das Ding zu kompilieren. Kompiliere ich A, wird gesagt das typelib X fehlt, welche zu B gehört. B sagt mir das Header Y fehlt. Wenn ich suche finde ich von Header Y 10 verschiedene Versionen, ...
    Echt zum Kotzen. Wäre am Besten den ganzen Mist neu zu implemtieren. Stattdessen habe ich eine Liste mit Fehlern die und Änderungswünschen. Shit.

    @Artchi: Stimme Dir zu, aber wer (außgenommen ein Javafreak) schreibt schon eine Add Funktion 😃



  • Artchi schrieb:

    Auf Kommentare kann man verzichten. Gebe aber auch zu, das ein paar Kommentare manchmal nicht schaden können.

    Für elemtare Rechenfunktionen mag das stimmen, viel wichtiger wäre hier ein Kommentar, was die Variablen überhaupt darstellen sollen.



  • Mein Favorit:

    i++: // i wird um einen erhöht
    

    😃



  • net schrieb:

    ok, dann mal ein beispiel. was schätzt du, macht diese funktion (alle kommentare entfernt)

    Sie ist bloedsinn. Absolut unlesbar und haengt von globalen variablen ab. also einfach wegschmeissen und neu machen.

    und dann auch gleich C++ statt C+ verwenden.

    guter Quellcode braucht keine/kaum kommentare und bei schlechtem quellcode reichen 1mio zeilen kommentar nicht aus.

    etwas anderes ist natuerlich die doku fuer etwaige anwender, also eine doku fuer eine library - da doxygen zu verwenden ist praktisch. dann hat man schon kommentare im code, aber nur 'schnittstellen kommentare' die oft ueberfluessig sind, aber hier geht es ja um den komfort des anwenders und nicht des programmierers 😉



  • Shade Of Mine schrieb:

    Sie ist bloedsinn.

    dafür funzt sie aber astrein ohne zicken. du urteilst mal wieder viel zu schnell, shady-baby 😉

    Shade Of Mine schrieb:

    Absolut unlesbar

    ja, schwer lesbar ohne kommentare und ohne die dazugehörige .h-datei zu kennen.

    Shade Of Mine schrieb:

    und haengt von globalen variablen ab.

    die variablen sind 'static' d.h. nur in der datei sichtbar. 4 andere funktionen haben noch zugriff darauf.

    Shade Of Mine schrieb:

    und dann auch gleich C++ statt C+ verwenden.

    geht nicht. gibt keinen c++ compiler für den prozessor wo das läuft



  • net schrieb:

    dafür funzt sie aber astrein ohne zicken. du urteilst mal wieder viel zu schnell, shady-baby 😉

    korrektheit reicht aber nicht, wenn sie nicht wartbar ist (was sie definitiv nicht ist (allein diese makros...)) wird sie irgendwann mal einen fehler beinhalten der nicht reparierbar oder nur mit grossem aufwand reparierbar ist.

    Shade Of Mine schrieb:

    ja, schwer lesbar ohne kommentare und ohne die dazugehörige .h-datei zu kennen.

    Guten code kann man ohne kommentare lesen. den code kannst du soviel kommentieren wie du willst, er ist mies.

    Shade Of Mine schrieb:

    die variablen sind 'static' d.h. nur in der datei sichtbar. 4 andere funktionen haben noch zugriff darauf.

    ah, wie gut dass das keine globalen variablen sind...

    Shade Of Mine schrieb:

    geht nicht. gibt keinen c++ compiler für den prozessor wo das läuft

    ok, dann kann man auch schoenes C als ersetz nehmen.

    anfangen wuerde ich mit schoenen namen und dann die makros etwas kuerzen. schon haetten wir etwas lesbareres.

    PS:
    such lieber mal nach ein paar threads zu diesem thema, das wurde schon oft genug gesagt, dass guter code keine kommentare braucht und unnoetige kommentare den lesefluss stoeren.



  • net schrieb:

    Artchi schrieb:

    Auf Kommentare kann man verzichten.

    ok, dann mal ein beispiel. was schätzt du, macht diese funktion (alle kommentare entfernt)

    void PPR_TX_Machine (void)
    {
       switch (PPR_send_status)
       {
           case PPR_SEND_IDLE:
             if (DATA_ACK_NOT_SET)
             {
               int f = FIFO_Read (&PPR_send_fifo);
               if (FIFO_ERROR == f)
                  break;
               WRITE_DATA_LINES ((UINT8)f);
               DATA_VALID_ON;
               PPR_timeout = PPR_GET_COUNTER_VALUE() + 5000;
               PPR_send_status = PPR_SEND_WAIT_ACK;
             }
             break;
    
           case PPR_SEND_WAIT_ACK:
             if (DATA_ACK_SET)
             {
                DATA_VALID_OFF;
                PPR_timeout = PPR_GET_COUNTER_VALUE() + 5000;
                PPR_send_status = PPR_SEND_WAIT_NOACK;
             }
             else if (PPR_timeout < PPR_GET_COUNTER_VALUE())
             {
                DATA_VALID_OFF;
                PPR_send_status = PPR_SEND_IDLE;
             }
             break;
    
          case PPR_SEND_WAIT_NOACK:
             if (DATA_ACK_NOT_SET || (PPR_timeout < PPR_GET_COUNTER_VALUE()))
                PPR_send_status = PPR_SEND_IDLE;
             break;
       }
    }
    

    Die schickt irgendwas über nen Hardwarebus 😉 korrekt?



  • Ich mache nur dort Kommentare wo man den Code ohne nicht verstehen würde. Alles andere ist Zeitverschwendung.



  • Shade Of Mine schrieb:

    net schrieb:

    die variablen sind 'static' d.h. nur in der datei sichtbar. 4 andere funktionen haben noch zugriff darauf.

    ah, wie gut dass das keine globalen variablen sind...

    Das sind keine globalen Variablen.

    Shade Of Mine schrieb:

    net schrieb:

    geht nicht. gibt keinen c++ compiler für den prozessor wo das läuft

    ok, dann kann man auch schoenes C als ersetz nehmen.

    wie kommst du eigentlich darauf (wie du weiter oben geschrieben hast), das wäre C+ und nicht ganz normales C?

    Musstest du schonmal (in relativ kurzer Zeit) ein Projekt in C fertigstellen? Das man in C genauso schön wie in C++ programmieren kann und C ja eigentlich auch OOP ist, da ja alles nur vom Programmierer abhängt, ist in meinen Augen Aberglaube.



  • DrGreenthumb schrieb:

    Musstest du schonmal (in relativ kurzer Zeit) ein Projekt in C fertigstellen? Das man in C genauso schön wie in C++ programmieren kann und C ja eigentlich auch OOP ist, da ja alles nur vom Programmierer abhängt, ist in meinen Augen Aberglaube.

    Pardon, eigentlich sind auch fast alle real existierenden C++-Programme genau so häßlich und undurchschaubar wie fast alle C-Programme.



  • stimmt auch wieder.

    Aber in C++ wirds einem doch deutlich leichter gemacht "schönen" code zu schreiben. Man kann sich viel kompakter ausdrücken. Für mich gilt immer, je weniger Code desto eleganter. Und da tu ich mich in C echt schwer.



  • Shade Of Mine schrieb:

    korrektheit reicht aber nicht, wenn sie nicht wartbar ist (was sie definitiv nicht ist (allein diese makros...))

    Da lehnst du dich IMHO ein Stück zu weit aus dem Fenster. Woher willst du eigentlich wissen, dass dieser Code "defintiv" unwartbar ist, hast du es mal versuchen müssen? Sieht eigentlich aus, wie eine ganz klar geschriebene Zustandsmaschine.

    Guten code kann man ohne kommentare lesen. den code kannst du soviel kommentieren wie du willst, er ist mies.

    Ich kann den ohne Kommentare lesen. Ich weiß natürlich nicht, WARUM die Zustandsmaschine so arbeitet wie sie es tut, und ich weiß auch nicht, was PPR heißt oder sonstige projektspezifische Sachen, aber das ist auch nicht Aufgabe des Codes, das zu erkennen. Dafür gibts Kommentare und Dokumentation.

    such lieber mal nach ein paar threads zu diesem thema, das wurde schon oft genug gesagt, dass guter code keine kommentare braucht und unnoetige kommentare den lesefluss stoeren.

    Das ist aber kein Fakt, den man irgendwo nachlesen könnte, das ist eine diskussionsbedürftige Behauptung.



  • net hat Recht.

    Bye, TGGC (Wähle deine Helden)



  • net schrieb:

    Artchi schrieb:

    Auf Kommentare kann man verzichten.

    ok, dann mal ein beispiel. was schätzt du, macht diese funktion (alle kommentare entfernt)

    void PPR_TX_Machine (void)
    {
       switch (PPR_send_status)
       {
           case PPR_SEND_IDLE:
             if (DATA_ACK_NOT_SET)
             {
               int f = FIFO_Read (&PPR_send_fifo);
               if (FIFO_ERROR == f)
                  break;
               WRITE_DATA_LINES ((UINT8)f);
               DATA_VALID_ON;
               PPR_timeout = PPR_GET_COUNTER_VALUE() + 5000;
               PPR_send_status = PPR_SEND_WAIT_ACK;
             }
             break;
    
           case PPR_SEND_WAIT_ACK:
             if (DATA_ACK_SET)
             {
                DATA_VALID_OFF;
                PPR_timeout = PPR_GET_COUNTER_VALUE() + 5000;
                PPR_send_status = PPR_SEND_WAIT_NOACK;
             }
             else if (PPR_timeout < PPR_GET_COUNTER_VALUE())
             {
                DATA_VALID_OFF;
                PPR_send_status = PPR_SEND_IDLE;
             }
             break;
    
          case PPR_SEND_WAIT_NOACK:
             if (DATA_ACK_NOT_SET || (PPR_timeout < PPR_GET_COUNTER_VALUE()))
                PPR_send_status = PPR_SEND_IDLE;
             break;
       }
    }
    

    Macht sie irgendwas mit dem Parallel-Port? Kontrolliert die Ausgabe?


Anmelden zum Antworten