nachdem mein erstes Modul (Telegram) soweit nutzbar ist würde ich gerne etwas größeres angehen (was wird noch nicht verraten). Da während der Entwicklung einige Fragen bei mir aufgetaucht sind würde ich gerne mal Euren Workflow kennenlernen.
[HR][/HR]
Wie genau entwickelt Ihr PHP-Module für Symcon?
Ich habe ganz am Anfang die entsprechende Modulstruktur direkt im /modules-Verzeichnis von IPS erstellt und drauf los programmiert. Das funktioniert soweit auch, aber neue Funktionen der Klasse stehen erst nach einem Neustart von IPS zur Verfügung. Nächster Versuch dann mit einem Git-Repository. Das klappt natürlich wunderbar, aber für jedes fehlende Semikolon muss ich einen Commit machen und das Modul neu laden? Geht das nicht irgendwie einfacher?
Es spricht ja überhaupt nichts gegen Git, ich nutze es gerne und viel. Aber ich würde gerne nur „Meilensteine“ commiten und nicht jeden winzigen Bugfix. Zumal dieser Commit-Reload-Cycle doch unnötig viel Zeit verbraucht. Habe ich was übersehen?
[HR][/HR]
Konfigurationsformulare
Es wäre schon wenn die Formulare etwas mehr Möglichkeiten beim Layout hätten. Sie nutzen nur einen kleinen Bereich links, egal wie groß das Fenster der Konsole wird. Bei Textfeldern darf die Caption z.B. nur relativ kurz sein, sonst wird sie von der Textbox verdeckt.
Schön wäre auch, wenn man im Formular einen Hilfe-Link (z.B. auf das Readme) einbinden könnte (für unfassendere Erklärungen zur Konfiguration).
Grobstruktur aufbauen
Verzeichnisstruktur/module.json erstellen und Werte setzen.
Überlegen welche Properties/Variablen benötigt werden und erstelle neben der module.php -> Create() auch sehr schnell die form.json.
Dann beginnt es schon mit den ersten Funktionen.
Generell gilt für mich dabei:
Doppelter Code -> neue Funktion
Und dann Schrittweise erweitern und testen.
Und zwischendurch immer wieder formatieren und refactoring.
Ich arbeite z.b. gänzlich ohne Git Commit in den Zwischenversionen.
Man kann ja lokal alles im Modules Ordner verändern und Entwicklungsschritte eiskalt reinkopieren.
Erst wenn eine Version getestet und für gut befunden ist, kommt diese ins Repo.
Wenn in schon VORHANDENEN Funktionen (nicht Create/ApplyChanges) was geändert wird, ist kein Neustart von IPS nötig.
Ein Neustart von IPS für neue Funktionen ist leider nötig. Da kann man auch nichts ändern.
Die Sache mit den Formularen wird sicherlich noch besser mit der Zeit. Wir haben da vielleicht 1-2 Ideen.
Was irgendwann kommen wird sind so kleine Infofelder.
Wann? Keine Angabe!
Ab er 4.1 hast du MC_ReloadModule - Das löst das „Reload“ Problem und du brauchst nicht ständig commiten. Außerdem unterstützt die 4.1 mehrere Branches. Du kannst also auf develop entwickeln und dann nach master mergen, sobald du einen guten Stand hast.