Ankündigung

Einklappen
Keine Ankündigung bisher.

Best practice: Wie sich wiederholenden Code vermeiden

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Best practice: Wie sich wiederholenden Code vermeiden

    Hallo,

    ich werde häufig Zeilen wie diese verwenden:
    Code:
       	{{ basic.symbol('og.Schlafzimmer.Fensterstatus2', 'og.Schlafzimmer.Reed.Fenster.geschlossen', 'Fenster', icon0~'fts_window_1w.svg', 0) }}
       {{ basic.symbol('og.Schlafzimmer.Fensterstatus3', 'og.Schlafzimmer.Reed.Fenster.geschlossen', 'Fenster', icon1~'fts_window_1w_open.png', 1) }}
       {{ basic.symbol('og.Schlafzimmer.Fensterstatus4', 'og.Schlafzimmer.Reed.Fenster.geschlossen', 'Fenster', icon1~'fts_window_1w_tilt.png', 2) }}
    [/CODE]
    Dabei ist ja ein Großteil doppelt/dreifach und auch die Reihenfolge ist nicht intuitiv.

    Besser wäre:
    {{basic.multisymbol('name', 'ga', ['first.svg', 'second.svg', 'third.svg'], [0, 1, 2]}}

    Oder sogar:
    {{basic.multisymbol('name', 'ga', ['first.svg', 'second.svg', 'third.svg']}}
    (0,1,2 als default)

    Das ginge so ein bisschen Richtung basic.slider, wobei bei Slider ja durchgezählt wird (image_0.svg, image_1.svg ...).

    Oder sogar:
    Kippfenster_list=['first.svg', 'second.svg', 'third.svg']
    Doppelfenster_list=['first1.svg', 'second1.svg', 'third1.svg']
    {{basic.multisymbol('name', 'ga', Kippfenster_list}}
    {{basic.multisymbol('name', 'ga', Doppelfenster_list}}


    Mir geht es jetzt weniger um dieses Beispiel als um die Frage, ob solche Vereinfachungen Sinn machen und wie sie möglich sind (über ein Macro ginge es ja, aber ist das mit Kanonen auf Spatzen?)

    Wie macht ihr das?

    Gruß,
    Hendrik

    #2
    Dazu solltest du dir die Macros von Twig ansehen. Im Prinzip mache ich ja bei meinem Quad Design auch nichts anderes, als vorhandene Widgets nochmal in ein anderes Widget zu packen.
    Mit freundlichen Grüßen
    Niko Will

    Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
    - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

    Kommentar


      #3
      Ja, deine Macros habe ich mir schon angesehen.

      Ich bin/war mir nur nicht sicher, ob das der beste Weg ist, wenn man nicht gleich ein neues Design erstellt. Sprich: Ab wann lohnt es, ein Macro zu erstellen.

      Wie handhabt ihr das?

      Gruß,
      Hendrik

      Kommentar


        #4
        Prinzipiell sind Macros genau dafür gedacht, um sich wiederholenden Code zu verringern. In deinem Fall würde es sich anbieten IMHO. Ansonsten muss man halt immer abwägen. Erstens, erhöht es die Lesbarkeit des "Codes"? Wie ist die Wartbarkeit? Eine allgemein gültige Aussage lässt sich dabei wohl nicht treffen und ist eher Geschmacksfrage.
        Mit freundlichen Grüßen
        Niko Will

        Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
        - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

        Kommentar


          #5
          Ja, das sehe ich auch so.

          Du packst also das Meiste in Macros, wie ich das sehe.
          Schade dass man keine ganzen Widgets einem Macro übergeben kann:
          Code:
          last_column=basic.shutter(.. .... .... .... ...)
          list.shutter(.. .... .... .... ..., last_column)
          Dann könnte man -in besagtem Fall- die letzte Spalte flexibel nutzen.
          Edit: Kann man in Macros auch Default-Werte für die Inputs definieren, wie es bei den eingebauten Widgets auch geht?

          Gruß,
          Hendrik

          Kommentar

          Lädt...
          X