Wo muss man dem PBP widersprechen?

Begonnen von RichardCZ, 06 April 2020, 15:21:31

Vorheriges Thema - Nächstes Thema

RichardCZ

An vielen Stellen hier klingt durch, dass man gut daran täte sich am PBP zu orientieren. Das stimmt zwar, aber das PBP ist nicht unfehlbar.

Es ist sozusagen eine Bibel mit kleinen und manchmal nicht so kleinen Schönheitsfehlern. Damit klar wird, dass wir so einem Werk eben nicht blind folgen, möchte ich in diesem Thread ab und zu PBP-Themen präsentieren, die das Originalbuch (von 2005) zwar empfiehlt, die sich aber im Laufe der Zeit als nicht praktikabel bzw. als eher kontraproduktiv erwiesen haben. Die sind mir alle bekannt, man muss also keine Angst haben, dass hier jemand mit einem dieser Punkte in die Wüste geschickt wird.

Irrtum: Multi-Contextual Return Values

Es sieht schon schön aus:

sub get_server_status {
    my ($server_ID) = @_;

    # Acquire server data somehow...
    my %server_data = _ascertain_server_status($server_ID);

    # Return different components of that data
    # depending on call context...
    return (
           LIST { @server_data{ qw(name uptime load users) }  }
           BOOL { $server_data{uptime} > 0                    }
            NUM { $server_data{load}                          }
            STR { "$server_data{name}: $server_data{uptime}"  }
           VOID { print "$server_data{load}\n"                }
        HASHREF { return \%server_data                        }
        DEFAULT { croak q{Bad context! No biscuit!}           }
    );
}


Anstatt sich also auf eine list/scalar Kontextwahl (wantarray) zu beschränken, benutzt man Contextual::Return (https://metacpan.org/pod/Contextual::Return) des PBP Autors und kann - siehe oben - herrliche Return Blöcke schreiben. Tja... schön ist es, aber auch nur für denjenigen der so eine Subroutine schreibt.

Und auch er fängt an die Geschichte zu bereuen, sobald er anfängt diese Sub zu nutzen.

print server_status() if (server_status() && server_status() < 1);

Öh ... ja. Bei Fishermans Friend gilt ja, "Ist es zu stark, bist Du zu schwach". Bei Contextual::Return gilt: "Es ist zu stark. Punkt."
Abgesehen von der Usability solcher Routinen, beisst sich Contextual::Return auch mit vielen anderen Modulen und verursacht hinsichtlich Kompatibilität und Seiteneffekten mehr Ärger als Nutzen.
Meidet es!
Witty House Infrastructure Processor (WHIP) is a modern and
comprehensive full-stack smart home framework for the 21st century.

betateilchen

Zitat von: RichardCZ am 06 April 2020, 15:21:31
Abgesehen von der Usability solcher Routinen, beisst sich Contextual::Return auch mit vielen anderen Modulen und verursacht hinsichtlich Kompatibilität und Seiteneffekten mehr Ärger als Nutzen.
Meidet es!

Ja, und weiter?

Im Moment kenne ich kein einziges FHEM Modul, das Contextual::Return verwendet. Man muss m.E. nicht über Probleme reden, die gar nicht existieren.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

RichardCZ

Zitat von: betateilchen am 07 April 2020, 13:21:53
Ja, und weiter?

Im Moment kenne ich kein einziges FHEM Modul, das Contextual::Return verwendet. Man muss m.E. nicht über Probleme reden, die gar nicht existieren.

Wie "Ja und weiter?" - generiere ich nicht schnell genug Text? Ich schreibe schon noch was zu einigen anderen Punkten sobald ich dazu komme. Oder Du kommst vorbei bei mir und schwingst die Peitsche. Vielleicht geht es dann schneller.

---

Zum C::R Thema. Es könnte ja jemand - solche gibt es auch - denken, er macht mal proaktiv was Tolles und pickt sich das aus PBP raus weil es so schön und mächtig aussieht. Ich halte es schon für angebracht Warnschilder aufzustellen. Oder sagst Du Deinen Kids nie "Vorsicht, keine Herdplatte anfassen" wenn sie die noch nie angefasst haben? Sowas ist Dir natürlich freigestellt, aber halte viel Verbandszeug bereit.
Witty House Infrastructure Processor (WHIP) is a modern and
comprehensive full-stack smart home framework for the 21st century.

betateilchen

Zitat von: RichardCZ am 07 April 2020, 14:18:49
generiere ich nicht schnell genug Text? Ich schreibe schon noch was zu einigen anderen Punkten sobald ich dazu komme. Oder Du kommst vorbei bei mir und schwingst die Peitsche. Vielleicht geht es dann schneller.

Das Gegenteil wäre mir viel lieber: Hör bitte auf mit Deiner nervigen Besserwisserei bezüglich perl hier im Forum. Andere Leute hier kommen auch nicht auf der Brotsuppe dahergeschwommen.

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

zap

Zitat von: betateilchen am 07 April 2020, 17:00:03
Das Gegenteil wäre mir viel lieber: Hör bitte auf mit Deiner nervigen Besserwisserei bezüglich perl hier im Forum. Andere Leute hier kommen auch nicht auf der Brotsuppe dahergeschwommen.

Danke.

Ignoriere es halt. Mach ich auch so, zumindest solange es mich nicht direkt betrifft.
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

RichardCZ

Zitat von: betateilchen am 07 April 2020, 17:00:03
Das Gegenteil wäre mir viel lieber: Hör bitte auf mit Deiner nervigen Besserwisserei bezüglich perl hier im Forum. Andere Leute hier kommen auch nicht auf der Brotsuppe dahergeschwommen.
Danke.

Soll ich also ein HoBo Forum gründen? Sehen das andere auch so?
Witty House Infrastructure Processor (WHIP) is a modern and
comprehensive full-stack smart home framework for the 21st century.

CoolTux

Ich finde es interessant. Und wer es nicht lesen will kann es ja gerne ignorieren.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

KernSani

#7
Zitat von: CoolTux am 07 April 2020, 18:54:07
Ich finde es interessant. Und wer es nicht lesen will kann es ja gerne ignorieren.
Dem ist nichts hinzuzufügen

Edit: korrigiere mich: Wer es nicht lesen will soll es bitte ignorieren.
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

zap

Zitat von: RichardCZ am 07 April 2020, 18:28:39
Soll ich also ein HoBo Forum gründen? Sehen das andere auch so?

Wäre nur konsequent, wenn Du Deinen Fork "offiziell" machst, inkl. Forum. Dann gibt es zwei FHEM Zweige (Namen sind ja Schall und Rauch) und die Modulentwickler können sich entscheiden, ob sie ihre Zeit in FHEM oder Hobo investieren. Wäre spannend zu sehen, wer auf den Hobo Zug aufspringt und sich Deinem Perl-Diktat unterwirft.

Am Anfang gäbe es vermutlich noch eine gewisse Kompatibilität, aber es würde schnell auseinanderlaufen und alle wären in ihrer Welt zufrieden.

Peace.
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

CoolTux

Ich finde Deine Meinung ist nicht gut für die FHEM Community.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

RichardCZ

Zitat von: zap am 08 April 2020, 20:59:09
Wäre nur konsequent, wenn Du Deinen Fork "offiziell" machst, inkl. Forum. Dann gibt es zwei FHEM Zweige (Namen sind ja Schall und Rauch) und die Modulentwickler können sich entscheiden, ob sie ihre Zeit in FHEM oder Hobo investieren. Wäre spannend zu sehen, wer auf den Hobo Zug aufspringt und sich Deinem Perl-Diktat unterwirft.

Konsequent wäre es, wenn ich feststellen würde, dass hier tatsächlich die Mehrheit "in Ruhe gelassen werden will". Selbst dann würde ich mir stark überlegen, ob ich komplett ein neues Projekt hochziehe, wenn es mir hauptsächlich um ein gutes System für mein Haus geht.

Was mein "Perl Diktat" anbelangt, muss ich Dir langsam eine Leseschwäche konstatieren, Es wurde ungefähr 100 mal gesagt, dass alles hier nur Empfehlungen sind. Wen das nicht interessiert - so wie Dich - der soll es ignorieren.

Da Du es aber nicht ignorieren kannst, fühle ich mich langsam versucht mich aktiv mit Deinem Code zu beschäftigen. Also nur zu - keif' weiter rum und dann zeige ich Dir mal echtes Perl Diktat ohne Samthandschuhe.
Witty House Infrastructure Processor (WHIP) is a modern and
comprehensive full-stack smart home framework for the 21st century.

Wuppi68

kommt runter Leute ;-)

Ich sehe das hier wie eine "Schulbank" wo man viele Dinge lernen kann...

cu

Ralf
Jetzt auf nem I3 und primär Homematic - kein Support für cfg Editierer

Support heißt nicht wenn die Frau zu Ihrem Mann sagt: Geh mal bitte zum Frauenarzt, ich habe Bauchschmerzen

zap

Zitat von: CoolTux am 08 April 2020, 21:03:37
Ich finde Deine Meinung ist nicht gut für die FHEM Community.


Grüße

Ich habe nur seine Frage beantwortet. Viele Dinge hier im Unterforum sind nicht gut für die FHEM Community.

Was soll die Drohung, sich mit meinem Code zu beschäftigen? Da bin ich entspannt. Wer sich mit dem Code meiner Module beschäftigen will, kann das gerne tun. Ist ja OpenSource, kann ich eh nicht verhindern. Nur aktives Verändern im Main-Zweig würde gegen die FHEM Entwicklungs-Regeln verstossen.

BTW, wenn sich jemand sehr gut in einer Programmiersprache auskennt, heißt das noch lange nicht, dass er auch ein guter Entwickler ist. Dabei geht es nicht nur um effiziente Anwendung von Statements, sondern v.a. um die effiziente Umsetzung von Anforderungen in Algorithmen. Dabei können sich Dinge wie effizienter Code, Geschwindigkeit, Kosten, Nutzerfreundlichkeit durchaus gegenseitig ausschließen.
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

RichardCZ

Zitat von: zap am 10 April 2020, 09:10:23
BTW, wenn sich jemand sehr gut in einer Programmiersprache auskennt, heißt das noch lange nicht, dass er auch ein guter Entwickler ist. Dabei geht es nicht nur um effiziente Anwendung von Statements, sondern v.a. um die effiziente Umsetzung von Anforderungen in Algorithmen. Dabei können sich Dinge wie effizienter Code, Geschwindigkeit, Kosten, Nutzerfreundlichkeit durchaus gegenseitig ausschließen.

Jaja - und außerdem kommt es auf die innere Schönheit an.

Da trifft es sich doch gut, dass ich - im Gegensatz zu Dir - Informatik studiert (und erfolgreich mit einem akademischen Titel abgeschlossen) habe.
Aber ich bin ja schon froh, dass Du nicht Algorhythmus geschrieben hast.
Witty House Infrastructure Processor (WHIP) is a modern and
comprehensive full-stack smart home framework for the 21st century.

zap

Zitat von: RichardCZ am 10 April 2020, 09:51:18
Jaja - und außerdem kommt es auf die innere Schönheit an.

Da trifft es sich doch gut, dass ich - im Gegensatz zu Dir - Informatik studiert (und erfolgreich mit einem akademischen Titel abgeschlossen) habe.
Aber ich bin ja schon froh, dass Du nicht Algorhythmus geschrieben hast.

Ein Kollege ;)

Schöne Ostern und arbeite nicht zuviel
(das ist jetzt ernst gemeint, Peace)
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB