GUIDs im Code vermeiden

Wäre es möglich, das Procedere zu vereinfachen, um portablen Code zu schreiben, der bspw auf eine Variablenhistorie zugreift?

Aktuell muss ich ja in jedem Skript mir zunächst die ID vom Archive Control holen (unter Angabe der unmöglich zu merkenden GUID). Dabei gibt es auf jeder Installation nur genau ein Archive Control. Syntaktisch ist es wohl konsistent, dass ich die ID für die AC_-Funktionen angeben muss, aber es ist schon recht umständlich. Eigentlich könnte die ID wohl auch automatisch ermittelt werden wenn ich bspw eine 0 angebe.

Oder es könnten globale Konstanten eingeführt werden für die „Singleton“-Objekte auf dem jeweiligen System.

Auch gewisse Neuerungen wie das wunderhübsche

IPS_SetEventAction($EreignisID, "{7938A5A2-0981-5FE0-BE6C-8AA610D654EB}", []);

…um ein „Default“ Behavior zu aktivieren sind wohl irgendwie gut gemeint, aber dass ich jedes Mal zum Erstellen eines Ereignisses auf die Doku schauen muss, um diese monströse GUID zu kopieren, ist für mich ein Schritt zurück.

Vielleicht fällt ja irgendwem was ein, um die Notwendigkeit von GUIDs im Code zu reduzieren.

1 „Gefällt mir“

Im Ersten Schritt würde mir da ein noch besserer Syntax-Autovervollständiger einfallen. Zur IPS_SetEventAction wird dann z.B. autom. diese GUID vorgeschlagen.
Eine stärkere Verknüpfung von Doku zu Scripteditor würde ich mir aber im generellen wünschen.

@Dr.Niels zum Beispiel: Rechte-Taste auf einen PHP Methodennamen → In Doku öffnen. Entsprechend die php.net oder halt ip-Symcon Doku.

Auch ein kleines Glosar (Direktlink in Doku) am oberen Rand mit Beispielhaft: Liste der häufigen GUIDs, Datenfluss, Script-Timer, o.ä.

Das hilft aber nur bei Scripten.

Den Vorschlag von @sokkederheld finde ich auch super, aber du kannst dir auch eine Helper Klasse schreiben, die du immer einbinden kannst.

Aber schöner wäre es, wenn man direkt auf die ID zugreifen könnte.

Grüße,
Kai

Klar, mir selbst was hinfrickeln kann ich natürlich auch, aber das erleichtert ja nicht das Teilen von Code, weil ich dann allen erklären muss, dass sie unbedingt auch meine tolle Helper-Klasse installieren müssen…

Finde die Idee, das per Autocomplete zu lösen auch nicht schlecht, kann mir aber vorstellen, dass das aufwändiger ist als ein paar globale defines.

Irgendwie ist eine GUID ja wie eine schlimmere Version von einer „magic number“ und good practice wäre es, wenn solche Dinge im Code eher vermieden werden. Aber darüber kann man sicherlich auch anderer Meinung sein.

Bei einem Modul ist das ja alles inkludiert.
Das selbst installieren wäre nur bei Scripten.

Aber ich würde mich auch freuen, wenn es da etwas geben würde.
Aber ich glaube da gibt es wichtigere Dinge. :slight_smile:

Grüße,
Kai

1 „Gefällt mir“

Ich fände es gut, wenn man in einer Instanz, analog zu Möglichkeit, die ObjektID zu kopieren, die Instanz-GUID erhalten könnte.
Analog wäre das auch an den anderen Stellen, wo GUID’s eine Rolle spielen, gut.

Ich verstehe das Prinzip des GUID’s zu sauberen Identifizierung, aber die sind ja nun systembedingt ohne Bezug, „unleserlich“. Und merken kann sich das sicherlich keiner … ok, ich kann mir noch nicht einmal Telefonnummern oder Geburtsdaten merken :face_with_spiral_eyes:

2 „Gefällt mir“

Ich finde nicht mal immer die Doku.
Ich weiß es artet jetzt wieder aus.

Aber manchmal träume ich von VS-Code als Editor.
Während der Arbeit schreiben wir große Projekte mit VS-Code mit allem Schnick-Schack, mit Doku, mit integriertem Intellisense, integrierbaren Extensions, etc.
Vielleicht wäre auch das ein Weg.
Nicht heute oder morgen. Aber übermorgen.
Und ja ich weiß - man begibt sich damit in fremde Hände.

Ja, den Editor müssen wir hier vielleicht nicht auch noch diskutieren; ich finde ihn auch ganz brauchbar ehrlich gesagt. Jedenfalls für das was ich machen.

Ich weiß nicht ob Du es weißt, aber es gibt eine IPS Extension für VSC und auch verschiedenste Anleitung um damit zu Entwickeln. Fühlt sich natürlich nicht so an wie „voll“ integriert, aber geht!

Gruß Heiko

1 „Gefällt mir“