Antwort auf: Wäre das einfach zu zu programmieren?

Startseite Foren Deutsches LiveCode-Forum Wäre das einfach zu zu programmieren? Antwort auf: Wäre das einfach zu zu programmieren?

#2020
Torsten
Teilnehmer

    Hi,

    ich habe mir Dein Script angeschaut und einige Verbesserungsvorschläge 🙂

    1. Regel: keine Anweisungen kopieren, sondern überlegen, wie man eine Struktur schafft, die jeden Block nur einmal enthält (hier habe ich die put “Not allowed” – Zeilen in ein Command “Put_Not_Allowed_Into_All_Fields” zu verschieben.

    2. Regel: Übersichtliche Wenn-Dann (If-Else)-Strukturen anlegen. Als ich am Ende deines Scripts die ganzen “end if”-Zeilen gesehen habe, war das ein Zeichen dafür, dass hier etwas getan werden muss 🙂

    3. Abbruch aus Schleife mit “exit”: wenn es Bedingungen gibt, die ein Überprüfen der anderen Bedingungen überflüssig machen, dann ist es besser, die Bedingung mit exit zu verlassen, anstatt dass der Rechner alle anderen Bedingungen auch erst überprüfen müss. In diesem Fall ist das kein Problem, aber bei komplexeren Strukturen kann sich das schon auf die Geschwindigkeit auswirken.

    Hier mein Script-Vorschlag 😀

    
    on mouseUp
       put field "Laenge" into L
       put field "Hoehe" into H
       put field "Tiefe" into T
       put field "Gewicht" into G
       
       if (L>1500)  or (L+H+T>3000 ) or (G>30000) then
          Put_Not_Allowed_Into_All_Fields
          exit mouseup
       end if
       
       
       if ( G<=50) and (L<=235) and (H<=162) and (T<=5) then 
    
          put "0,70€" into fld "lux"
          put "0,95€" into fld "Euro1"
          put "1,30€" into fld "Monde1"
          put "0,95€" into fld "Euro2"
    
       else if ( G<=500) and (L<=340) and (H<=250) and (T<=20) then 
    
          put "1,40€" into fld "lux"
          put "2,85€" into fld "Euro1"
          put "2,85€" into fld "Euro2"
          put "3,90€" into fld "Monde1"
          put "3,90€" into fld "Monde2"
          put "3,90€" into fld "Monde3"
    
       else if ( G<=2000) and (L<=340) and (H<=250) and (T<=30) then
    
          put "2,80€" into fld "lux"
          put "4,75€" into fld "Euro1"
          put "4,75€" into fld "Euro2"
          put "6,50€" into fld "Monde1"
          put "6,50€" into fld "Monde2"
          put "6,50€" into fld "Monde3"
    
       else if (G<=2000) and (L+H+T<=900) then
    
          put "4,20€" into fld "Lux"
          put "9,50€" into fld "Euro1"
          put "9,50€" into fld "Euro2"
          put "13,00€" into fld "Monde1"
          put "13,00€" into fld "Monde2"
          put "13,00€" into fld "Monde3"
    
       else if (G<=10000)  then 
    
          put "8,40" into fld "Lux"
          put "18,05€" into fld "Euro1"
          put "30,40€" into fld "Euro2"
          put "39,00€" into fld "Monde1"
          put "75,40€" into fld "Monde2"
          put "111,80€" into fld "Monde3"
    
       else if (G<=30000)  then 
    
          put "10,50€" into fld "Lux"
          put "30,40€" into fld "Euro1"
          put "77,90€" into fld "Euro2"
          put "111,80€" into fld "Monde1"
          put "221,00€" into fld "Monde2"
          put "330,20€" into fld "Monde3"
       end if
       
    end mouseUp
    
    command Put_Not_Allowed_Into_All_Fields
       put "Not Allowed" into fld "lux"
       put "Not Allowed" into fld "Euro1"
       put "Not Allowed" into fld "Monde1"
       put "Not Allowed" into fld "Euro2"
       put "Not Allowed" into fld "Monde2"
       put "Not Allowed" into fld "Monde3"
    end Put_Not_Allowed_Into_All_Fields