FHEM Forum

FHEM - Entwicklung => FHEM Development => Perl Ecke => Thema gestartet von: RichardCZ am 19 April 2020, 12:39:04

Titel: Evolution statt Revolution
Beitrag von: RichardCZ am 19 April 2020, 12:39:04
siehe https://forum.fhem.de/index.php/topic,110348.msg1044267.html#msg1044267 ff

Mein Vorschlag - in dieser Reihenfolge. Refactoring ist eine multi-pass Angelegenheit, aber man muss ja nicht mehr Schritte machen als nötig und einige Schritte bedingen andere, bzw. verringern die Gefahr des "um die Ohren Fliegens":

Steinzeit -> Bronzezeit

Bronzezeit->Eisenzeit

* Unterschiede/Gemeinsamkeiten zwischen true, false, 0, 1, leerem String und undef lernen und verstehen. Ohne das geht's nicht, auch als "Hobbyprogrammierer".
* Unterschied zwischen numerischem und string Kontext verstehen (das ist das tiefere Verständnis von o.g. min/max Problem); == vs. eq etc.


Eisenzeit->Frühmittelalter

Frühmittelalter->Hochmittelalter

Hochmittelalter->Spätmittelalter




Neuzeit (Reformation)

So. ;-) Jetzt kann jeder schauen wo er ist. Und jeder kann schauen wo er bleibt.


Weiter machen wir dann, wenn genügend in der Neuzeit angekommen und bereit für die Aufklärung sind.
Titel: Antw:Evolution statt Revolution
Beitrag von: zap am 19 April 2020, 13:46:02
Sind einige gute Vorschläge dabei. Insbesondere die Dinge, die man auch für die meisten anderen Programmiersprachen unterschreiben kann.

Viele andere werde ich ignorieren, erstens weil es nur Vorschläge sind und zweitens, weil ich es kann.

Beispiel Prototypen bleiben bei mir drin und ich habe keine Angst vor Funktionen mit mehr als 70 Zeilen, sofern es sinnvoll ist.
Wo kommt eigentlich die 70 her? Funktionen dienen v.a. dazu, redundanten Code zu vermeiden. Auch eine Funktion mit 140 oder 500 Zeilen kann übersichtlich sein. Warum sollte ich Code, der nur einmal ausgeführt wird, in eine Funktion auslagern, nur um die aufrufende Funktion unter 70 Zeilen zu bekommen?
Titel: Antw:Evolution statt Revolution
Beitrag von: RichardCZ am 19 April 2020, 14:04:36
Zitat von: zap am 19 April 2020, 13:46:02
Viele andere werde ich ignorieren, erstens weil es nur Vorschläge sind und zweitens, weil ich es kann.

Immer wenn ich mir mit irgendwas Mühe mache, ist es ungemein wichtig, dass Du klarstellst, was alles davon Du ignorieren wirst (nun das dritte Mal wenn ich recht mitzähle).
Schon über ganzseitige Anzeigen in der Lokalzeitung nachgedacht?

Zitat
Beispiel Prototypen bleiben bei mir drin und ich habe keine Angst vor Funktionen mit mehr als 70 Zeilen, sofern es sinnvoll ist.
Wo kommt eigentlich die 70 her? Funktionen dienen v.a. dazu, redundanten Code zu vermeiden. Auch eine Funktion mit 140 oder 500 Zeilen kann übersichtlich sein. Warum sollte ich Code, der nur einmal ausgeführt wird, in eine Funktion auslagern, nur um die aufrufende Funktion unter 70 Zeilen zu bekommen?

Ich habe das jetzt nicht verstanden. War das eine Frage oder ein Statement?
Titel: Antw:Evolution statt Revolution
Beitrag von: igami am 19 April 2020, 14:58:40
Zitat von: zap am 19 April 2020, 13:46:02
Viele andere werde ich ignorieren, erstens weil es nur Vorschläge sind und zweitens, weil ich es kann.
Diese Vorschläge sind für mich sehr Hilfreich, da ich jemand bin, der "es nicht kann".

Ich kann auch sagen "meine Module funktionieren doch, was soll ich daran etwas ändern?" aber ich werde nicht immer Maintainer sein.
Wir hatten schon den Vorfall mit den Modulen von Dietmar, bei dem die Erben den ganzen Code umgeschrieben haben, weil unverständlich. Da wäre es doch schön, wenn wir uns auf gemeinsame Richtlinien einigen könnten.
Wenn du einem Vorschlag nicht zustimmt, dann Begründe das doch bitte und mach einen Gegenvorschlag.
Andernfalls bitte wirklich ignorieren und unkonstruktive Beiträge unterlassen.
Titel: Antw:Evolution statt Revolution
Beitrag von: Icinger am 19 April 2020, 15:23:24
Jetzt muss/will ich mich auch mal kurz zu Wort melden.

Bin bisher eigentlich nur stiller Mitleser und amüsiere mich teils sehr darüber, was hier abgeht.

Ich kann zwar (bis zu einem gewissen Grad) manche Personen hier verstehen, die gleich mal auf Abwehrhaltung gehen, weil hier plötzlich jemand "neuer" aus dem Nichts auftaucht und ganz ungefragt RambaZamba macht.
Noch dazu, wo Richard nicht unbedingt eine sehr politische Schreibweise hat.
Aber ganz ehrlich, so wie Igami grad geschrieben hat: Es ist irgendwie schade, wenn ständig nur gemeckert wird, aber keine wirklichen Gegenargumente kommen.

Andererseits finde ich die Initiative und Argumente von Richard durchaus als sehr positiv und nehme davon gerne vieles auf.
Bin aktuell auch grad dabei, mein OBIS-Modul ein wenig zu refactorn, da ist durchaus einiges zu verbessern.
Ist ja auch für andere hier von Vorteil, wenn der Code verständlicher ist. Umso leichter kann vielleicht der eine oder andere dann zB einen Patch liefern, weil demjenigen etwas fehlt.

lg, Stefan
Titel: Antw:Evolution statt Revolution
Beitrag von: RichardCZ am 19 April 2020, 15:26:51
Und für alle anderen, die so mitlesen: Die Prototypen in FHEM sind echt schlimm.

zap hat sicher nix dagegen, wenn ich das am Beispiel seiner Kronjuwelen demonstriere.

Man hat kategorisch nicht verstanden wozu das Werkzeug da ist.

Natürlich nicht, denn wer offiziell seinen Status als Ignorant zelebriert - "weil er es kann", der liest auch
keine Doku, wie z.B. https://perldoc.perl.org/perlsub.html#Prototypes
Wo eindeutig steht, dass

a) die Kontrollfunktion der Prototypen zur Kompilezeit sehr limitiert ist
b) dass die Hauptfunktion dazu dient "builtins" zu schreiben

Schon klar: Weiß man nicht, braucht man nicht wissen, kann man ignorieren. Basta. *Fußaufstampf*

Man kann mit dem Werkzeug nicht einmal umgehen.

Ganz überwiegend schei*t man Definitionen hin a la

sub HMCCU_FindDatapoint ($$$$$);
sub HMCCU_GetChannel ($$);
sub HMCCU_GetDatapoint ($@);
sub HMCCU_GetDatapointAttr ($$$$$);
sub HMCCU_GetDatapointCount ($$$);
sub HMCCU_GetDatapointList ($$$);
sub HMCCU_GetSpecialDatapoints ($$$$$);
sub HMCCU_GetSwitchDatapoint ($$$);
sub HMCCU_GetValidDatapoints ($$$$$);
sub HMCCU_IsValidDatapoint ($$$$$);


Also "$". Selten verirrt sich mal ein @ hin, ganz selten ein ;

von

sub mymegafunc (\[%@]);

hat man natürlich noch nie was gehört, (wie auch, wenn man keine Doku liest),
was natürlich schade ist, denn dann könnten die Protos wenigstens zwischen einem
Skalar und einem Hashref (oder Arrayref) differenzieren.

Also verlässt man sich auf Cargo Cult - das aber standhaft.

Man hat gelernt zu leiden.

a.k.a. "Wer A sagt, muss auch B sagen können."

Nachdem man sich also eine überflüssige Geisel ans Bein getackert hat, muss auch die eigene Leidensfähigkeit ein Upgrade erhalten

    my $readingformat = HMCCU_GetAttrReadingFormat( $hash, $hash );
    my $substitute    = HMCCU_GetAttrSubstitute( $hash, $hash );


Tja. An zwei Argumenten geht halt kein Weg vorbei, also doppelt man einfach was man eigentlich nur einmal hätte übergeben können.
Und der Betrachter kratzt sich am Kopf. Das stört zap nicht, denn er hatte und hat nie vor seinen Code mal aus der Hand zu geben oder für jemanden anderen als ihn selbst verständlich zu schreiben.

Da könnte er ja seinen Kardinalstatus in der frühchristlichen Kirche (300 A.D.) gefährden - denkt er.

Kleiner Tipp: ($;$)




Ich verstehe ehrlich gesagt nicht, warum manche bei solchen Sachen so uneinsichtig sind. Meine Hypothese ist ja, dass diese Leute von der Flache-Erde-Theorie enttäuscht wurden und nun händeringend einen anderen Ersatz für ihr Glaubenssystem suchen.

Titel: Antw:Evolution statt Revolution
Beitrag von: rudolfkoenig am 19 April 2020, 16:55:25
ZitatIch verstehe ehrlich gesagt nicht, warum manche bei solchen Sachen so uneinsichtig sind.
Vielleicht sind es keine Kinder mehr, bei denen ein "ich sag das, glaubs mir" reicht.
Oder die herabwuerdigenden Kommentare loesen ein "jetzt erst recht nicht" aus.

Ich bitte dich staerker auf die Wortwahl zu achten, und weniger "witzig" auf Kosten von Anderen zu sein, im Sinne der Netikette (https://forum.fhem.de/index.php/topic,43383.0.html):
Zitat
Das FHEM-Forum ist ein Ort, wo sich die Forenmitglieder mit gegenseitiger Wertschätzung, höflich und konstruktiv begegnen.
[...]
Unerwünscht sind beispielsweise beleidigende, herabsetzende, sexistisch oder rassistische Aussagen
Titel: Antw:Evolution statt Revolution
Beitrag von: betateilchen am 19 April 2020, 17:06:15
Soviel Popcorn, wie ich in den letzten Wochen gebraucht hätte, um das Forum weiterhin zu ertragen, gibt es überhaupt nicht.

Vermutlich werde ich bald an den Punkt kommen, an dem ich darüber nachdenken muss, ob ich mich hier weiterhin noch einbringen möchte. Spaß macht mir dieses Hobby im Moment jedenfalls nicht mehr, und das liegt weniger an der inhaltlichen Diskussion, sondern an der Art und Weise ihrer Darbietung.

Insgesamt bin ich im Moment ziemlich traurig darüber, was hier gerade passiert.
Titel: Antw:Evolution statt Revolution
Beitrag von: RichardCZ am 19 April 2020, 17:29:40
Zitat von: rudolfkoenig am 19 April 2020, 16:55:25
Vielleicht sind es keine Kinder mehr, bei denen ein "ich sag das, glaubs mir" reicht.

Und was macht man, wenn ein

* weil "xxx"
* da steht warum
* da auch
* ...

auch nicht reicht?

Zitat
Oder die herabwuerdigenden Kommentare loesen ein "jetzt erst recht nicht" aus.

Genau. Wenn jemand trotzig ist, ist das dann meine Schuld. Moment... keine Kinder hast Du gesagt?
Ja was jetzt?

Zitat
Ich bitte dich staerker auf die Wortwahl zu achten, und weniger "witzig" auf Kosten von Anderen zu sein, im Sinne der Netikette (https://forum.fhem.de/index.php/topic,43383.0.html):

Schöne Gumimparagraphen hat man da. Ich fühle mich von Anfang an hier herabsetzend behandelt.

Das nächste mal werde ich den Thread sperren und nur öffenen wenn ich was editieren muss dazu benötige ich keine Moderator-Macht und spare mir das übliche Hijacking.