Programmierstil - Grundsatzfrage



  • 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.



  • "Selbsterklärender Code" ist kein eindeutiger Anspruch. Aus meiner Sicht gehört (natürlich Übung damit und) vor allem auch Professionalität und Virtuosität dazu.
    Für die einen sind selbsterklärende Variablennamen wichtig, für die anderen eher a,b,c (bzw. i++). Das ist aber letztlich auch eine Frage der Codegestaltung selber.

    Ein komplexer Algorithmus oder eine Funktion mit Schleifenverschachtelung und Variablenverschattung muß nicht gerade sehr übersichtlich sein.

    Bei vielen Funktionen können alle Module einzeln getestet werden und auch woanders weiterverwendet, und so in den tieferen oder höheren Codezeilen kurz dokumentiert.

    Bei Haskell gibt es viele interessante, aber (weil experimentell?) undokumentierte Funktionssammlungen. Das ist die reinste Pest, erschwert das schnelle Einarbeiten oder Überblicken und mindert generell den Bibliotheksstandard. Die Strategie ist dann, dass man eher nach Typen schaut (die ordentlich coden und dokumentieren) als nach Funktionen/Programmen. Die schlechte Übersicht mindert allein nicht den professionellen Anspruch, aber sie ist wichtiger Teil des Problems.



  • 92 schrieb:

    Für die einen sind selbsterklärende Variablennamen wichtig, für die anderen eher a,b,c (bzw. i++). Das ist aber letztlich auch eine Frage der Codegestaltung selber.

    Was bitte könnte jemals das Argument für Bezeichner wie "a,b,c" sein? WTF? Natürlich sind sprechende Namen wichtig -- ganz egal ob Variablennamen oder sonstige Bezeichner.
    i als Schleifenzähler bzw. allgemein anerkannte und verstandene Kurzform von "Index" ist OK. Ist aber auch so ziemlich der einzige 1-Buchstabenname der OK ist.

    92 schrieb:

    Ein komplexer Algorithmus oder eine Funktion mit Schleifenverschachtelung und Variablenverschattung muß nicht gerade sehr übersichtlich sein.

    Weswegen tief verschachtelte Schleifen in einem vernünftigen Programm auch nix verloren haben. Kann man ja schliesslich leicht vermeiden.
    Und auch komplexe Algorithmen kann man meist so implementieren dass zumindest jemand der den Algorithmus kennt und verstanden hat das Programm relativ leicht lesen kann. Und dass jemand der den Algorithmus und nicht versteht zumindest immer noch weiss was abgeht, welcher Algorithmus überhaupt verwendet wird und wo die Implementierung dieses Algorithmus anfängt und aufhört.



  • hustbaer schrieb:

    Ist aber auch so ziemlich der einzige 1-Buchstabenname der OK ist.

    Was ist mit x, y?



  • Mechanics schrieb:

    hustbaer schrieb:

    Ist aber auch so ziemlich der einzige 1-Buchstabenname der OK ist.

    Was ist mit x, y?

    Du hast z vergessen.



  • z ist schon deutlich seltener. Ich hab schon viele Funktionen gesehen, die nichts mit Kooordinaten zu tun haben, bei denen die Parameter aber x und y heißen.


Anmelden zum Antworten