sieht so professioneller code aus???



  • Hallo,
    über die Verwendung von foreach kann man sicher streiten.
    Der Algo läßt sich ja nun wirklich sehr leicht implementieren. Auf der anderen Seite gibt es ne Menge Leute die selbst hier noch Fehler machen:

    for (Container<Foo>::iterator Beg = cont.begin() ; Beg != cont.end() ; Beg++)
    //...
    

    Ist einfach nicht perfekt (min. 2 kleine Mängel).

    Wenn der Container dann noch Pointer enthält kommen häufig sogar noch ungewollte Typfehler hinzu.

    Kurz gesagt: Es mag Situationen geben, in denen es angebrachter ist einen Algo selbst zu schreiben. Grundsätzlich ist die Anwendung der std::algorithmen aber
    1. Effezienter - wer außer Volkard kennt denn alle Tricks. Außerdem können die std-Implementierer Sachen berücksichtigen, die wir als Anwender nicht berücksichten können -> z.B. bestimmtes Containerlayout

    2. Leichter zu verstehen und zu lesen - Algorithmen haben einen eindeutigen Namen an denen man ihre Aufgabe erkennt. Schleifen sind ein low-level-Konzept. Die Semantik muss ich erstmal suchen.

    3. Weniger Fehleranfllig - viele Typfehler werden bei der Templateparameterauflösung automatisch erkannt. In handgeschriebenen Code muss ich sie erst selbst suchen.

    Alles in Allem verstehe ich nicht, warum man sich gegen die Algos wehrt. Es verwenden ja auch alle strlen, strcpy, memcpy usw. anstatt jedesmal ne eigene Schleife zu basteln.

    Zugegeben, C++ mit STL ist ein anderes C++ als das von vor ein paar Jahren.



  • Original erstellt von Mis2com:
    **Hallo!
    Also ich finde, dass man den Code slber gut verstehen und erkennen sollte.
    Was bringt es einem einen super aufgebauten Code zu haben, wenn er dann superlahm ist?
    Ich meien:
    Es kommt auf den Code selber und nicht auf dessen Styling an.
    🙂
    Wenn das Programm fertig ist guckt eh keiner mehr rein.

    Gut gestylter Code ist nämlich keinen Tick schneller.
    :D**

    Gut gestylter Code und schneller Code sind NIE ein Wiederspruch. Nie nie nie. Im Gegenteil gut gestylter Code ist sogar schneller! In der Verwendung und in der Erweiterbarkeit. 🙄



  • Original erstellt von Mis2com:
    Wenn das Programm fertig ist guckt eh keiner mehr rein.

    Hast Du eine Ahnung. Zum einen sind Programme oftmals nie fertig, zum anderen ist es immer ein Dritter, der rein schauen muß.



  • Ich könnte mir ein Leben (nur aufs Programmieren bezogen) ohne STL garnicht mehr vorstellen.
    Da ich die sgi-Implementation der STL verwende habe ich einen Hash. Und ich habe schon oft maps, multimaps und lists verwendet.



  • Hi,

    also wenn wir schon von "Professionalität" reden.
    Professionalität heisst, dass ein Programm
    1. zufriedenstellend läuft.
    2. schnell und dadurch kostengünstig fertiggestellt wird.

    So, und nur somit lässt sich damit Geld verdienen !!!
    Und keinem Unternehmer, und keinem Kunden schon gleich gar nicht,
    interessieren irgendwelche Internas.
    Sollten später im Zuge der Wartung noch diverse Änderungen vorgenommen werden müssen, können diese Programmteile im Nachhinein übersichtlicher gestaltet werden, was meisst auch nicht gemacht wird.

    Das ist wie im Fussball. Die Mannschaft muss viele Tore schiessen, und nicht wenige schöne.

    Cu
    Manitu 🕶



  • also wenn wir schon von "Professionalität" reden.
    Professionalität heisst, dass ein Programm
    1. zufriedenstellend läuft.
    2. schnell und dadurch kostengünstig fertiggestellt wird.

    So, und nur somit lässt sich damit Geld verdienen !!!
    Und keinem Unternehmer, und keinem Kunden schon gleich gar nicht,
    interessieren irgendwelche Internas.
    Sollten später im Zuge der Wartung noch diverse Änderungen vorgenommen werden müssen, können diese Programmteile im Nachhinein übersichtlicher gestaltet werden, was meisst auch nicht gemacht wird.
    Das ist wie im Fussball. Die Mannschaft muss viele Tore schiessen, und nicht wenige schöne.

    Auch als Kunde wuerde zumindestens ich mich ganz massiv fuer die internas interessieren: Wenn die Software halbwegs relevant ist und einen blocking Error hat, dann entscheidet die Wartbarkeit vom Code ganz erheblich darueber, wie schnell das Problem gefixt ist. Dass das Kunden nicht immer tun, mag erhoiehte Risikobereitschaft oder einfach nur Dummheit sein.

    Ich selbst arbeite in der Produktentwickung, d.h. der Code den ich schreibe muss einerseits von einigen anderen verstanden werden, zum anderen vom mir auch nach 5 Jahren noch (vorausgesetzt, dass ich dann noch hier bin 😉 ). Ich kann nur sagem, dass zumindestens in diesem Bereich es praktisch unmoeglich ist im Nachhinein irgendetwas Wartbar zu machen. Und ich wuerde auch jeden in den Hintern treten, der Code schreibt, des es nicht von vorne herein ist: das ist in meinem Augen hoechst unprofessionell.



  • Hi,

    @virtuell:
    Wie glaubst du denn, ist das bei "relativ" erfolgreichen Firmen wie
    Microsoft ? 🙂

    Cu
    Manitu 🕶



  • Original erstellt von Manitu:
    Wie glaubst du denn, ist das bei "relativ" erfolgreichen Firmen wie Microsoft ? 🙂

    Wieso sollte Microsoft und Co nicht genauso auf wartbarkeit wert legen wie andere Firmen?

    Gerade wenn man immer neue Versionen des gleichen Programmes rausbringt, dann MUSS man ja wartbaren code haben.



  • Hihi 🙂 Aber nichtsdestotrotz gibt es keine andere Firma die sich unwartbaren Code erlauben kann 🙂



  • Wie glaubst du denn, ist das bei "relativ" erfolgreichen Firmen wie Microsoft ? 🙂

    Naja, leider ist Windows ja keine Eintagsfliege geblieben, so dass das wohl nur den Schluss nahelegt, dass die ihren Code im Griff haben.
    Ich find zwar Windows ziemlichen Muell, aber ich denke, dass es guter Muell ist. 😉



  • Professionalität heisst, dass ein Programm
    1. zufriedenstellend läuft.
    2. schnell und dadurch kostengünstig fertiggestellt wird.

    Und ich wage zu bezweifeln, dass einer dieser beiden Punkte erreichbar ist, wenn der Code nicht gut und übersichtlich ist. Schließlich sind professionelle Projekte, Projekte bei denen mehr als einer schon die ein oder andere Woche programmiert. Wenn das nicht gut entworfen und schön geschrieben ist, hast Du spätestens nach dem nächsten verlängerten Wochenende keinen Plan mehr.



  • Hi,

    klar darf der Code nicht wie Kraut und Rüben aussehen, sonst wird's nie ein vernünftiges Programm. Es muss aber so programmiert werden, dass die beiden von mir genannten Punkte auf jeden Fall erfüllt werden. Falls nicht, kann der Code schön sein wie er will, dann kann man niemals damit Geld verdienen, und das allein ist
    Professionalität.
    Guter Code heisst: Möglichkeit einer kostengünstigen Wartungs- und Erweiterungsmöglichkeit. Dies kann man als 3. Punkt durchaus aufführen. Aber wie gesagt, nur als DRITTEN Punkt. Und auch nur, wenn eine Wartung und Erweitung geplant ist. 😉

    CU
    Manitu 🕶



  • OK, bei Punkt 1 sind wir uns einig...

    aber Punkt 2 und 3 sind austauschbar.

    Denn es bringt mir nichts wenn ich zwar schnell fertig bin, aber jegliche Wartungsarbeit unermaesslich viel Zeit verlangt!



  • void model_try_cache_render(int model_num, matrix *orient, vector * pos, uint flags, int objnum, int num_lights )
    {
        model_really_render(model_num, orient, pos, flags, objnum);
    }
    

    Das ist aus dem FreeSpace2-Source 😃



  • Original erstellt von kartoffelsack:
    Schließlich sind professionelle Projekte, Projekte bei denen mehr als einer schon die ein oder andere Woche programmiert. Wenn das nicht gut entworfen und schön geschrieben ist, hast Du spätestens nach dem nächsten verlängerten Wochenende keinen Plan mehr.

    Das ist es ja grade es arbeiten mehrere an dem Projekt.
    Und wenn du dann deinen "tollen" code schriebst den niemand lesen kann kann das ganze projekt scheitern weil:

    1.) kann ja sein das weis ich du nen bug fabriziertst und niemand den code lesen kann ist der eben nur mit großem aufwand fix-bar..

    2.) in einem großen Projekt schreiben die leute nicht IHR programm sondern nur teile die andere dann verwenden sollen und dann sind gutlesbare sachen halt besser.. weil die anderen dich dann nicht erst lange fragen müssen was macht denn die variable? oder was hat diese Methode hier zu bedeuten...

    PS: meine meinung...



  • Was bedeuten Hashtables im Zusammenhang mit der STL, wofür wären die gut?



  • @foo
    und wo ist der Widerspruch in dieser Aussage?

    Schön geschriebener und gut designter Code ist imho gut lesbar und v.a. gut benutzbar.



  • Original erstellt von kartoffelsack:
    **@foo
    und wo ist der Widerspruch in dieser Aussage?

    Schön geschriebener und gut designter Code ist imho gut lesbar und v.a. gut benutzbar.**

    das ist doch auch meine meinung..

    ich habe dich nur zitiert um da smit den mehreren leuten in den text einzubringen die personalpronomen waren nicht auf dich bezogen...



  • Auf der anderen Seite gibt es ne Menge Leute die selbst hier noch Fehler machen:

    for (Container<Foo>::iterator Beg = cont.begin() ; Beg != cont.end() ; Beg++)
    //...
    

    Ist einfach nicht perfekt (min. 2 kleine Mängel).

    hm...
    Ich sehe Beg++ wo ein ++Beg besser wäre.
    Was stimmt daran denn sonst nicht?

    (weil irgendwie sieht die Schleife aus, wie eine die ich ständig schreibe...)



  • Ich sehe Beg++ wo ein ++Beg besser wäre.

    hey, das ist mein spruch 😡 😉


Anmelden zum Antworten