Programmierstil - Grundsatzfrage



  • Jockelx schrieb:

    In meinem momentanen Projekt fühle ich mich jedenfalls wohl, denn wenn da mal ein Kommentar steht, dann lese ich den auch, weil er auf irgendwas wichtiges oder unerwartetes aufmerksam macht.

    Das halte ich auch für sinnvoll. Dokumentation dort wo es wirklich nötig ist.
    Problem ist nur das unterschiedliche Personen unterschiedliche Sachen für dokumentationswürdig halten. Das was Person a nicht versteht, versteht wiederum Person b und fast sich an den Kopf warum dies kommentiert sein muss...



  • GUEST99 schrieb:

    Einer hat als Programmierstil Funktionserlegung, d.h. eine Hauptfunktion besteht aus x Unterfunktionen, im Sourcecode gibt es keine Dokumentation, weil die kleinen Unterfunktionen - die auch in anderen Hauptfunktionen mit verwendet werden können - und Variablen alle selbsterklärend seien.

    Der andere Kandidat hat als Programmierstil Black Box, d.h. eine Funktion mit möglichst wenig Unterfunktionen, wenn Unterfunktionen dann nur spezifisch für eine Hauptfunktion. Dokumentation inline, incl. Angabe der Parameterbereiche, Erklärung von Teilen der Funktion (was z.B. in einer Case alles abgefragt wird).

    Woher weißt du das? Das irritiert mich bei den ganzen Antworten hier. Du kannst doch gar nicht wissen, was für einen Stil jemand hat. Ich könnte so spontan gar nicht sagen, was für einen Stil ich selber habe. Man findet sicherlich Programmteile von mir, die völlig unterschiedlich ausschauen. Mal mit mehr, mal mit weniger Kommentaren. Und wenn du mich darauf ansprichst, warum ich etwas so und so geschrieben habe, würde ich wahrscheinlich auch sagen, weil das schon gut ist so. Ich könnte mir aber auch sicherlich auch dutzende Lösungen vorstellen, die mir evtl. auch gut gefallen würden. Ich finde, Softwareentwicklung ist viel zu komplex, als dass man sich eindeutig auf einen Stil festlegen lassen könnte.



  • Jockelx schrieb:

    asc schrieb:

    Gregor schrieb:

    Das Betonen des selbsterklaerenden Codes, der keine Kommentare benoetigt ist aus meiner Sicht eine unendlich arrogante Einstellung eines Programmierneulings, der noch nie mit Code einer anderen Person umgehen musste.

    ...

    Deckt sich absolut mit meiner Erfahrung.
    Vielleicht hast auch du, Gregor, auch nicht sooo viel Erfahrung, dass du dich durch Code mit Kommentaren wie

    //Dies ist der Konstruktor der Klasse Blah. Er erzeugt ein Blah Objekt
      Blah();
      // Oder
      // Diese Schleife zählt von 0 bis 9
       for(int i= 0; i < 10; ++i)
    

    durchwühlen musstest.
    Das ist kein Scherz, sondern sind echte Beispiele.

    Das ist kein Beispiel, das sind nicht einmal sinnvolle Kommentare.
    Code Kommentieren bedeutet nicht, die Programmiersprache zu erklären.



  • Jockelx schrieb:

    Vielleicht hast auch du, Gregor, auch nicht sooo viel Erfahrung, dass du dich durch Code mit Kommentaren wie

    //Dies ist der Konstruktor der Klasse Blah. Er erzeugt ein Blah Objekt
      Blah();
      // Oder
      // Diese Schleife zählt von 0 bis 9
       for(int i= 0; i < 10; ++i)
    

    durchwühlen musstest.
    Das ist kein Scherz, sondern sind echte Beispiele.

    Ok, ich gehe natürlich davon aus, dass sinnvoll kommentiert und dokumentiert wird, wenn es gemacht wird. Ich stelle nicht in Frage, dass man Kommentare falsch nutzen kann.

    Ich hatte in den letzten Jahren mit einem Code zu tun, in dem jede Menge numerische Algorithmen realisiert sind. Ich bin da über jedes kleine bisschen Kommentar glücklich. Aber das ist vielleicht ein Extremfall.


  • Mod

    Selbstsprechender Code: Der Code erklärt selbst, was er macht.
    Nützlicher Kommentar: Er erklärt, wieso etwas gemacht wird.



  • SeppJ schrieb:

    Selbstsprechender Code: Der Code erklärt selbst, was er macht.
    Nützlicher Kommentar: Er erklärt, wieso etwas gemacht wird.

    Nicht ganz.

    Wenn es Zeit kostet, den Code zu lesen, damit man versteht, was er macht, dann sollte man schon in nem kurzen Satz sagen, was er macht.

    Oder anders gesagt, meine Definition:

    Kommentare sollen nicht die Programmiersprache erklären.

    Damit ist der Redunante überflüssige Müll weg und übrig bleiben die wichtigen Häppchen.



  • Ohne Xing erfolgreich schrieb:

    SeppJ schrieb:

    Selbstsprechender Code: Der Code erklärt selbst, was er macht.
    Nützlicher Kommentar: Er erklärt, wieso etwas gemacht wird.

    Nicht ganz.

    Wenn es Zeit kostet, den Code zu lesen, damit man versteht, was er macht, dann sollte man schon in nem kurzen Satz sagen, was er macht.

    Oder hübscher pr0ggern, das geht meistens.


  • Mod

    Ohne Xing erfolgreich schrieb:

    SeppJ schrieb:

    Selbstsprechender Code: Der Code erklärt selbst, was er macht.
    Nützlicher Kommentar: Er erklärt, wieso etwas gemacht wird.

    Nicht ganz.

    Wenn es Zeit kostet, den Code zu lesen, damit man versteht, was er macht, dann sollte man schon in nem kurzen Satz sagen, was er macht.

    Ich meinte das in Anlehnung an die Diskussion selbstsprechender Code vs. Kommentare. Nicht jeder Code ist automatisch selbsterklärend. Aber es gibt in den modernen Sprachen keine Ausrede mehr, nicht das Idealbild des selbsterklärenden Codes anzustreben. Es ist nicht schwer. Wenn man es nicht schafft, dann programmiert man nicht gut genug.



  • SeppJ schrieb:

    Aber es gibt in den modernen Sprachen keine Ausrede mehr, nicht das Idealbild des selbsterklärenden Codes anzustreben. Es ist nicht schwer. Wenn man es nicht schafft, dann programmiert man nicht gut genug.

    Doch, leider gibt es eine Ausrede: man muss wissen wie man das macht, worauf man acht geben muss etc. Und leider bringt das den Schülern/Studenten keiner bei. Vermutlich weil viele Lektoren/Dozenten/... selbst nicht sauber programmieren können.

    Bzw. vielleicht auch weil das alles sehr subjektiv ist, und daher schwer zu benoten.


  • Mod

    Gut, es gibt Ausreden, aber es sind faule Ausreden 🙂 . An sich wäre es problemlos möglich, wenn man nur könnte oder wollte. Im Gegensatz zu früher, wo man aufgrund der Beschränkungen der Sprachen und Systeme sehr viel größere Schwierigkeiten beim Schreiben von selbsterklärenden Code hatte, wenn es denn überhaupt möglich war. Wenn man es heute immer noch nicht hin bekommt, dann ist man eben, wie du selbst sagst, nicht hinreichend gut ausgebildet.



  • Woher weißt du das? Das irritiert mich bei den ganzen Antworten hier. Du kannst doch gar nicht wissen, was für einen Stil jemand hat. Ich könnte so spontan gar nicht sagen, was für einen Stil ich selber habe. Man findet sicherlich Programmteile von mir, die völlig unterschiedlich ausschauen. Mal mit mehr, mal mit weniger Kommentaren. Und wenn du mich darauf ansprichst, warum ich etwas so und so geschrieben habe, würde ich wahrscheinlich auch sagen, weil das schon gut ist so. Ich könnte mir aber auch sicherlich auch dutzende Lösungen vorstellen, die mir evtl. auch gut gefallen würden. Ich finde, Softwareentwicklung ist viel zu komplex, als dass man sich eindeutig auf einen Stil festlegen lassen könnte.

    Lt. Unterlagen von meinem Kollegen haben wir mit beiden schonmal vor einiger Zeit gearbeitet. Da waren es aber nur relativ unwichtige Projekte, wo kein Schaden entstehen kann.

    Bei dem Projekt ist es anders. Daher auch die Anforderung MISRA-C (bzw. MISRA-C++ lt. Suche für C++) konform zu programmierern.



  • Wenn ihr MISRA-Conformance braucht müsst ihr MISRA-Conformance vorschreiben. Was den Preis vermutlich massiv in die Höhe treiben wird.



  • hustbaer schrieb:

    SeppJ schrieb:

    Aber es gibt in den modernen Sprachen keine Ausrede mehr, nicht das Idealbild des selbsterklärenden Codes anzustreben. Es ist nicht schwer. Wenn man es nicht schafft, dann programmiert man nicht gut genug.

    Doch, leider gibt es eine Ausrede: man muss wissen wie man das macht, worauf man acht geben muss etc. Und leider bringt das den Schülern/Studenten keiner bei. Vermutlich weil viele Lektoren/Dozenten/... selbst nicht sauber programmieren können.

    Bzw. vielleicht auch weil das alles sehr subjektiv ist, und daher schwer zu benoten.

    Kein Dozent/Lektor schaut sich an, wie die Studenten programmieren, das Programm muss nur laufen und tun was die Aufgabenstellung verlangt hat.

    Der Code kann wie Kraut und Rüben aussehen. Darauf achtet leider keiner und ich fand das übrigens sehr schade und denke, dass das auch heute noch so ist.
    Denn Code anzuschauen, das dürfte wahrscheinlich zu personalintensiv sein.



  • Wenn ihr MISRA-Conformance braucht müsst ihr MISRA-Conformance vorschreiben. Was den Preis vermutlich massiv in die Höhe treiben wird.

    Ist mir schon klar.
    Ist auch ausgeschrieben.
    Dennoch haben beide die angegebenen Argumente.

    Nebenbei, bzgl. höherer Preis:
    Stundensatz ist bei 75-92 EUR/Std.

    Ist das realistisch, dass die sich an MISRA Regeln halten oder ist das zu billig?

    P.S.
    Kollege ist wirklich länger krank. Seine Stelle wird ausgeschrieben. Ersatz soll schnellstens eingestellt werden. Dann kann ich mich wieder nur um die Consulting Seite kümmern - gefällt mir auch besser.



  • GUEST99 schrieb:

    Bei dem Projekt ist es anders. Daher auch die Anforderung MISRA-C (bzw. MISRA-C++ lt. Suche für C++) konform zu programmierern.

    Es gibt Programme, die Tools auf MISRA-* Konformität testen.

    Ihr könntet die zwei Codeschnipsel, die ihr von den beiden Programmierern erhalten habt, mit diesen Tools testen, dann wisst ihr auch, wer MISRA konform programmieren kann.



  • Ohne Xing erfolgreich schrieb:

    Es gibt Programme, die Tools auf MISRA-* Konformität testen.

    Ihr könntet die zwei Codeschnipsel, die ihr von den beiden Programmierern erhalten habt, mit diesen Tools testen, dann wisst ihr auch, wer MISRA konform programmieren kann.

    Man programmiert nicht unbedingt nach einem bestimmten Stil, wenn dieser nicht verlangt wurde. Zumal kaum jemand MISRA kennen sollte, da die Dokumentation nicht frei verfügbar ist.



  • asc schrieb:

    Ohne Xing erfolgreich schrieb:

    Es gibt Programme, die Tools auf MISRA-* Konformität testen.

    Ihr könntet die zwei Codeschnipsel, die ihr von den beiden Programmierern erhalten habt, mit diesen Tools testen, dann wisst ihr auch, wer MISRA konform programmieren kann.

    Man programmiert nicht unbedingt nach einem bestimmten Stil, wenn dieser nicht verlangt wurde. Zumal kaum jemand MISRA kennen sollte, da die Dokumentation nicht frei verfügbar ist.

    Wenn im Jobangebot aber klar gemacht wurde, dass MISRA Kenntnisse erwartet werden, dann kann man das bei einem Test auch verlangen.



  • Ohne Xing erfolgreich schrieb:

    hustbaer schrieb:

    SeppJ schrieb:

    Aber es gibt in den modernen Sprachen keine Ausrede mehr, nicht das Idealbild des selbsterklärenden Codes anzustreben. Es ist nicht schwer. Wenn man es nicht schafft, dann programmiert man nicht gut genug.

    Doch, leider gibt es eine Ausrede: man muss wissen wie man das macht, worauf man acht geben muss etc. Und leider bringt das den Schülern/Studenten keiner bei. Vermutlich weil viele Lektoren/Dozenten/... selbst nicht sauber programmieren können.

    Bzw. vielleicht auch weil das alles sehr subjektiv ist, und daher schwer zu benoten.

    Kein Dozent/Lektor schaut sich an, wie die Studenten programmieren, das Programm muss nur laufen und tun was die Aufgabenstellung verlangt hat.

    Der Code kann wie Kraut und Rüben aussehen. Darauf achtet leider keiner und ich fand das übrigens sehr schade und denke, dass das auch heute noch so ist.
    Denn Code anzuschauen, das dürfte wahrscheinlich zu personalintensiv sein.

    Der gute Herr Breymann (doziert an der HS Bremen) (http://www.amazon.de/Einführung-professionelle-Programmierung-Ulrich-Breymann/dp/3446410236) tut dies sehr wohl. Er schaut genau hin, sehr genau sogar. Wir nannten ihn den "menschlichen Compiler".

    Wann immer etwas falsch, umständlich, unklar oder inperformant war, hat er es auch bemängelt. Alles in allem: Guter Dozent!



  • ohdochdiegibtes schrieb:

    Ohne Xing erfolgreich schrieb:

    hustbaer schrieb:

    SeppJ schrieb:

    Aber es gibt in den modernen Sprachen keine Ausrede mehr, nicht das Idealbild des selbsterklärenden Codes anzustreben. Es ist nicht schwer. Wenn man es nicht schafft, dann programmiert man nicht gut genug.

    Doch, leider gibt es eine Ausrede: man muss wissen wie man das macht, worauf man acht geben muss etc. Und leider bringt das den Schülern/Studenten keiner bei. Vermutlich weil viele Lektoren/Dozenten/... selbst nicht sauber programmieren können.

    Bzw. vielleicht auch weil das alles sehr subjektiv ist, und daher schwer zu benoten.

    Kein Dozent/Lektor schaut sich an, wie die Studenten programmieren, das Programm muss nur laufen und tun was die Aufgabenstellung verlangt hat.

    Der Code kann wie Kraut und Rüben aussehen. Darauf achtet leider keiner und ich fand das übrigens sehr schade und denke, dass das auch heute noch so ist.
    Denn Code anzuschauen, das dürfte wahrscheinlich zu personalintensiv sein.

    Der gute Herr Breymann (doziert an der HS Bremen) (http://www.amazon.de/Einführung-professionelle-Programmierung-Ulrich-Breymann/dp/3446410236) tut dies sehr wohl. Er schaut genau hin, sehr genau sogar. Wir nannten ihn den "menschlichen Compiler".

    Wann immer etwas falsch, umständlich, unklar oder inperformant war, hat er es auch bemängelt. Alles in allem: Guter Dozent!

    Dann bist du zu beneiden.
    Aber den Herrn kenne ich vom Namen, ich habe mir sein Buch "C++ Der Programmierer" gekauft.



  • GUEST99 schrieb:

    Wenn ihr MISRA-Conformance braucht müsst ihr MISRA-Conformance vorschreiben. Was den Preis vermutlich massiv in die Höhe treiben wird.

    Ist mir schon klar.
    Ist auch ausgeschrieben.
    Dennoch haben beide die angegebenen Argumente.

    Nebenbei, bzgl. höherer Preis:
    Stundensatz ist bei 75-92 EUR/Std.

    Ist das realistisch, dass die sich an MISRA Regeln halten oder ist das zu billig?

    Es wird wohl weniger den Stundensatz beeinflussen als die Stundenanzahl.

    Ohne Xing erfolgreich schrieb:

    Es gibt Programme, die Tools auf MISRA-* Konformität testen.

    Ihr könntet die zwei Codeschnipsel, die ihr von den beiden Programmierern erhalten habt, mit diesen Tools testen, dann wisst ihr auch, wer MISRA konform programmieren kann.

    Was ich über MISRA gelesen habe dürften da einige Regeln dabei sein die man maschinell nicht bzw. nicht sinnvoll prüfen kann.
    Ein "sicher konform" kann man von den Tools also vermutlich nicht bekommen.
    Ein "sicher nicht konform" sollte aber natürlich drin sein.


Anmelden zum Antworten