myUtils - Verständnisproblem

Begonnen von alanblack, 16 Februar 2017, 11:51:34

Vorheriges Thema - Nächstes Thema

alanblack

Hallo zusammen!

Da meine myUtils so langsam zu groß und unhandlich wird, habe ich angefangen nach einer handlicheren Lösung zu suchen.
Nach ein paar kleinen Schwierigkeiten habe ich jetzt die ersten zwei Module eingerichet, da lese ich in https://forum.fhem.de/index.php/topic,35944.msg282784.html#msg282784
ZitatZweite Idee: Nicht jede Pipifax-Routine in ein eigenes Modul auslagern. Geht alles nach myUtils

Mal abgesehen davon, dass Dateien mit ein paar tausend Zeilen unhandlich sind, ist eine Modularisierung förderlich für gutes
Programmieren. Warum sollte ich also alles in einer Datei lassen? Wo ist der Vorteil?

Grüße
FHEM 6.0 auf raspi3&ODROID XU4 mit HMLAN und HM-MOD-RPI-PCB, LaCrosse via JeeLink, COC868 und CUL433, Xiaomi Aqara+div. Zigbee via deCONZ, Dooya via SIGNALDuino, ZWave mit Danalock
Jeder Witz kann ein Einzeiler sein mit genügend Semikolons

betateilchen

Warum wählst Du nicht den einfachsten aller Wege: Du kannst mehrere 99_...Utils.pm Dateien haben, solange deren Namen mit 99_ beginnen und mit Utils.pm enden.

Bei mir gibt es aktuell acht solcher Dateien:


99_alarmUtils.pm
99_balkonUtils.pm
99_calendarUtils.pm
99_colorUtils.pm
99_debugUtils.pm
99_myUtils.pm
99_notifyUtils.pm
99_rcUtils.pm


99_rcUtils.pm enthält beispielsweise alle Funktionen, die ich zur Auswertung von Fernbedienungen brauche,
99_calendarUtils.pm enthält alles, was mit Calendar-devices zu tun hat,
usw.

Das erleichtert den Überblick erheblich. Insgesamt sind in den acht Dateien derzeit ca. 350 Funktionen untergebracht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

alanblack

Zitat von: betateilchen am 16 Februar 2017, 12:43:02
Warum wählst Du nicht den einfachsten aller Wege: Du kannst mehrere 99_...Utils.pm Dateien haben, solange deren Namen mit 99_ beginnen und mit Utils.pm enden.
[...]
Das erleichtert den Überblick erheblich. Insgesamt sind in den acht Dateien derzeit ca. 350 Funktionen untergebracht.

Das ist mir schon bewusst. Den "fhem-nahen" Teil werde ich auch so aufgliedern. Allerdings möchte ich die eigentliche
Programm-Logik in reine Perl-Module packen, die ich ohne oder zumindest ohne großen Aufwand schlimmstenfalls auf
ein anderes System portieren kann.
Das war aber nicht meine Frage.

Meine Frage, die durch das obige Zitat aufkeimte, war, ob ich mir mit der Teilung der myUtils Probleme einhandele, von
denen ich bisher keine Idee hatte - und auch jetzt noch nicht habe.

Grüße
FHEM 6.0 auf raspi3&ODROID XU4 mit HMLAN und HM-MOD-RPI-PCB, LaCrosse via JeeLink, COC868 und CUL433, Xiaomi Aqara+div. Zigbee via deCONZ, Dooya via SIGNALDuino, ZWave mit Danalock
Jeder Witz kann ein Einzeiler sein mit genügend Semikolons

marvin78

Es hat niemand gesagt, dass es eine Datei sein muss.

Aufteilen macht keine Probleme. Du musst dich an die Vorgaben einer myUtils halten. Das hat betateilchen aber im Grunde schon gesagt.

betateilchen

Zitat von: alanblack am 16 Februar 2017, 14:12:36
Meine Frage, die durch das obige Zitat aufkeimte, war, ob ich mir mit der Teilung der myUtils Probleme einhandele, von
denen ich bisher keine Idee hatte - und auch jetzt noch nicht habe.

FHEM ist reines perl. Und solange Du genau weißt, was Du tust, kannst Du tun, was Du willst.

Aber was Du mit "reinen perl Modulen" meinst, habe ich im Zusammenhang mit FHEM wohl noch nicht verstanden. Genausowenig wie ich verstanden habe wieso die durchaus richtige Aussage

ZitatNicht jede Pipifax-Routine in ein eigenes Modul auslagern. Geht alles nach myUtils

bei Dir solche komplizierten Fragen aufwirft?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: alanblack am 16 Februar 2017, 14:12:36
Allerdings möchte ich die eigentliche Programm-Logik in reine Perl-Module packen, die ich ohne oder zumindest ohne großen Aufwand schlimmstenfalls auf ein anderes System portieren kann.

Nochmal zur Klarstellung: Die Datei 99_myUtils.pm ist von Haus aus eine reine perl Moduldatei!
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

alanblack

Zitat von: marvin78 am 16 Februar 2017, 14:16:16
Es hat niemand gesagt, dass es eine Datei sein muss.

Aufteilen macht keine Probleme. Du musst dich an die Vorgaben einer myUtils halten. Das hat betateilchen aber im Grunde schon gesagt.

Naja, die Aussage des Users "Prof. Dr. Peter Henning" in dem eingangs zitierten Posting ist u.a. "Geht alles nach myUtils"
und liest sich wie ein Rat, alles in einer Datei zu lassen.

Und es gehen in fhem auch module ohne 99_***Utils.pm - nur halt nicht mehr über "edit Files".

Zitat von: betateilchen am 16 Februar 2017, 14:18:16
FHEM ist reines perl. Und solange Du genau weißt, was Du tust, kannst Du tun, was Du willst.
Aber was Du mit "reinen perl Modulen" meinst, habe ich im Zusammenhang mit FHEM wohl noch nicht verstanden.

Okay, die Abgrenzung war schlecht formuliert. Besser wäre die Unterscheidung in subs, die
fhem-Funktionen nutzen, und andere subs, die auch ohne fhem genutzt werden können.

Zitat
Genausowenig wie ich verstanden habe wieso die durchaus richtige Aussage bei Dir solche komplizierten Fragen aufwirft?

Weil komplizierte Fragen, die anfangs gestellt und beantwortet wurden, weniger Aufwand
bedeuten, als wenn man die Fragen spät stellt und wegen der unerwarteten Antwort nochmal
von vorne beginnen muss.

So habt Ihr aber meine Frage schon hinreichend beantwortet. Danke!

Grüße
FHEM 6.0 auf raspi3&ODROID XU4 mit HMLAN und HM-MOD-RPI-PCB, LaCrosse via JeeLink, COC868 und CUL433, Xiaomi Aqara+div. Zigbee via deCONZ, Dooya via SIGNALDuino, ZWave mit Danalock
Jeder Witz kann ein Einzeiler sein mit genügend Semikolons

marvin78

myUtils ist hier "das geflügelte Wort" für irgendeine myUtils Datei. Was du da machen, ob mehrere oder eine schwingt da sicher nicht mit und die Aussage enthält auch sicher keinen Ratschlag in irgendeine Richtung.

betateilchen

Zitat von: alanblack am 16 Februar 2017, 14:43:49
Und es gehen in fhem auch module ohne 99_***Utils.pm - nur halt nicht mehr über "edit Files".

Dateien, die mit 99_.*Utils.pm bezeichnet sind, haben nicht nur die Eigenschaft, unter "Edit files" zum Bearbeiten aufzutauchen, sondern sie werden anhand ihres Namens auch automatisch von FHEM geladen. Und wenn man sie über "Edit files" bearbeitet, werden diese Dateien auch nach dem Speichern automatisch neu geladen und auf Syntaxfehler geprüft.

Zitat von: alanblack am 16 Februar 2017, 14:43:49
Besser wäre die Unterscheidung in subs, die  fhem-Funktionen nutzen, und andere subs, die auch ohne fhem genutzt werden können.

Man kann eine 99_.*Utils.pm selbstverständlich auch ausserhalb von FHEM nutzen. Sie kann mit "use 99-myUtils" in jedes Perl Programm geladen werden. Ob das allerdings Sinn macht, wenn darin Funktionen verwendet werden, die von fhem.pl (oder anderen FHEM Modulen) bereitgestellt werden, muss man im Einzelfall entscheiden. Grundsätzlich ist diese Überlegung bei perl aber IMMER zu treffen und trifft für jedes Modul (auch solche, die per CPAN installiert werden) zu.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!