azok: zu langer code (meiner meinung nach)

hi!

also, ich habe nun ein weblog geschrieben, welches die verschiedensten funktionen 'beherrscht'. - nun, leider ist die basisdatei (mit ein paar fkt's) ziemlich lang, nämlich genau 599 zeilen. - meine frage daher an euch, was sollte ich mir speziell anschauen bzw. zu herzen nehmen etc., dass der code nicht so lang ist... (gut, er ist auskommentiert und if's mit einer anweisung habe ich zzt noch mit {} geschrieben, wo man doch diese weglassen könnte).
hier also der Code in einer ungehighlighten version im .txt format:

lg
azok

--
Murphys Law: "Alles Schöne im Leben ist entweder illegal, ungesetzlich oder es macht dick."
Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:( n4:° ss:| de:] js:| ch:( sh:) mo:) zu:)
  1. Hi azok,
    ich hab leider momentan leider keine zeit den text durchzugehn aber while-schleifen kann man zum teil durch for-schleifen ersetzten und komplexe if-blöcke in switch.

    1. Frage dazu:
      Ich habe mir die switches letztens auch angesehen und musste nach einigen praktischem umgängen feststellen dass sie sich irgendwie "komisch anfühlen" im code und auch irgendwie unpraktisch (IMHO) sind.

      Was sind denn der Konkrete Vorteil von Switches?

      sh:) fo:| ch:{ rl:( br:& n4:~ ie:| mo:? va:{ de:< zu:| fl:) ss:| ls:< js:|

      1. wenn du zb bei ner Variablen prüfen willst in welchem bereich das sie liegt und dementsprechen eine ausgabe machen.

        hier ein bsp.:

        Alter: <textfeld wos eingegeben wird>
        <ein submit-button>

        <Ausgabe>

        dann hast du a einen PHP code wie

        <?
        $Alter = $_get['textfeld'];

        if (Alter > 100){
        $ausgabe = "alter sack";
        }
        elseif (Alter > 90){
        $ausgabe = "etwas alter sack";
        }
        elseif (Alter > 80){
        $ausgabe = "nicht ganz so alter sack";
        }
        elseif (Alter > 70){
        $ausgabe = "nicht mehr so junger sack";
        }
        ...

        ?>

        oder du hast

        <?
        $Alter = $_get['textfeld'];

        switch ($Alter){
          case $Alter>100:
           $ausgabe = "alter sack";
           break;
          case $Alter>90:
           $ausgabe = "etwas alter sack";
           break;
          case $Alter>80:
           $ausgabe = "nicht ganz so alter sack";
           break;
          case $Alter>70:
           $ausgabe = "nicht mehr so junger sack";
           break;
        ...
        }
        ?>

        ich persöhnlich finde letzteres übersichtlicher und besser nachvollziehbar.

        1. echo $begrueszung;

          $Alter = $_get['textfeld'];

          switch ($Alter){
            case $Alter>100:
             $ausgabe = "alter sack";
             break;
            case $Alter>90:
             $ausgabe = "etwas alter sack";
             break;
            case $Alter>80:
             $ausgabe = "nicht ganz so alter sack";
             break;
            case $Alter>70:
             $ausgabe = "nicht mehr so junger sack";
             break;
          ...
          }

          Diese Syntax ist zwar in PHP möglich, ergibt jedoch ein völlig anderes Verhalten als du erwartest.

          Ein Eingabe von 0 liefert "alter Sack", 1 liefert das was du bei case $Ausgabe>0 oder ==1 hingeschrieben hättest. Alle anderen Werte landen im default-Zweig.
          Schau dir die Syntax von switch nochmal an und wenn du mir dann sagen kannst, warum das Verhalten so wie von mir beschrieben ist, dann hast du wieder was dazugelernt. :-)

          echo "$verabschiedung $name";

      2. hi,

        Ich habe mir die switches letztens auch angesehen und musste nach einigen praktischem umgängen feststellen dass sie sich irgendwie "komisch anfühlen" im code und auch irgendwie unpraktisch (IMHO) sind.

        "komisch anfühlen", ach du je ...

        und vielleicht riecht echo auch manchmal seltsam, und while ist "irgendwie zu grün" ...?

        programmierstil sollte man nicht an solch diffusen "empfindungen" festmachen.

        Was sind denn der Konkrete Vorteil von Switches?

        sie können abfragestrukturen stark vereinfachen, die mit if ausgedrückt ziemlich umständlich würden.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. An mir hast du auch nen Narren gefressen oder?

          Es hatte schon einen grund wieso ich es in quotes setze und nicht augeschrieben stehen liesst.

          DDvKA* = Man schaut über den Code und sieht feste strukturen die mit () und {} eingeklammert sind und stösst dann auf ein Switch der so garnicht auf die übliche art arbeitet. Das fällt ins Auge und lässt einen etwas stocken... zu beginn.

          Zumal: Dass etwas Grün ist ist ja keine Gefühlwahrnehmung (ausser du bist poeth und assoziirst grün mit hoffnung) sondern eine visueller sinneseindruck.

          *Die Definition von Komisch Anfühlen

          --
          sh:) fo:| ch:{ rl:( br:& n4:~ ie:| mo:? va:{ de:< zu:| fl:) ss:| ls:< js:|
          1. hi,

            An mir hast du auch nen Narren gefressen oder?

            zum fressen gern habe ich dich auf grund der art vieler deiner antworten nicht; zum narr möchte ich mich jetzt nicht weiter äußern :-)

            DDvKA* = Man schaut über den Code und sieht feste strukturen die mit () und {} eingeklammert sind und stösst dann auf ein Switch der so garnicht auf die übliche art arbeitet.

            was ist denn "üblich"?

            ist alles das "üblich", was du bisher an kontrollstrukturen, befehlen, funktionen etc. in einer programmiersprache kennengelernt hast - und der rest ist dann "komisch" ...?

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. Bevor ich jetzt wieder zu allem was sage und du mir mit deiner floskel-goldwage aus jeder silbe einen strick zu drehen versuchst lass ich das und setze mich etwas raus in die sonne.

              Aber oben wirst du ein neues Thread von mir finden an dem du sicherlich wieder was auszusetzen hast.

              Du bist wie eine Grippevirus: Hat man sich es mit dir einmal verscherzt wird man dich nichtmehr los... =)

              (bzw. nach 12 tagen...)

              --
              sh:) fo:| ch:{ rl:( br:& n4:~ ie:| mo:? va:{ de:< zu:| fl:) ss:| ls:< js:|
              1. hi,

                Aber oben wirst du ein neues Thread von mir finden an dem du sicherlich wieder was auszusetzen hast.

                nö, der war mir zu uninteressant.

                Du bist wie eine Grippevirus: Hat man sich es mit dir einmal verscherzt wird man dich nichtmehr los... =)

                *g*

                gruß,
                wahsaga

                --
                /voodoo.css:
                #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. echo $begrueszung;

    ... der code ... er ist auskommentiert

    _Aus_kommentiert ist dein Pseudo-Code in Zeile 54f. Der restliche Code ist kommentiert. :-)

    Du könntest die &uuml;berfl&uuml;ssige Kodierung der Umlaute als HTML-Entities in den PHP-Kommentaren weglassen. PHP-Quelltext ist kein HTML, in dem es u.U. sinnvoll sein kann, Umlaute und andere Sonderzeichen zu entsprechend zu kodieren.

    Ansonsten:
    Ob es (viel) kürzer geht, kann ich ohne intensives Quelltext-Studium nicht feststellen. Dazu ist mir der aber zu unübersichtlich gestaltet. Die Formatierung und Kommentierung sieht sehr gut aus, da hab ich nichts auszusetzen, jedoch ist von Zeile 120 bis 600 alles nur noch ein großer Block. Den zu überschauen ist schwierig.
    Auch wenn dort keine wiederkehrenden Teile drin vorkommen sollten, für die eine Funktion auf alle Fälle gerechtfertigt wäre, solltest du doch funktionale Teilbereiche in einzelne Funktionen umlagern.
    Einige Meinungen sagen, alles was länger als 30 Zeilen ist, sollte eine eigene Funktion werden. Als Faustformel ist diese Aussage zwar ziemlich pauschal, und so strikt wie sie dasteht sollte sie meiner Meinung nach auch nicht beherzigt werden. Die Intention, Code zu überschaubaren funktionalen Blöcken zusammenszufassen, kann ich jedoch nur begrüßen.
    Bei aussagekräftiger Benennung der Funktionen geht daraus schon die Aufgabe der Programmteile hervor. Gleichzeitig kommt eine Struktur in das Programm.

    Beispielsweise könnte das Hauptprogramm-Teil so aussehen:

    DatenHolen();
    DatenVerarbeiten();
    DatenAusgeben();

    Da kann man dann gezielt in einzelne funktionale Bereiche abtauchen... und nach dem Prinzip sollte sich das in den Funktionen fortsetzen.

    Aufgefallen ist mir allerdings eine Dopplung von Code ab Zeile 169 ff. und 420 ff.

    echo "$verabschiedung $name";