Re: Python 'Benzingespräche'
Verfasst: Montag 13. Dezember 2021, 05:07
Ach wie schön ein allgemeiner `customError` der auch gleiche eine ”custom” Schreibweise für Klassen verwendet, statt die, die alle anderen verwenden. In den meisten gängigen Programmiersprachen.
Nicht das es schon `ValueError` und `TypeError` gäbe, die man verwenden könnte.
Ausnahmen/``raise`` scheinen auch noch nicht so ganz verstanden worden zu sein, wenn danach noch Code steht der niemals ausgeführt werden kann.
Luschtig ist auch „The arguments use is self-explanatory:“, gefolgt von einer Erklärung — ohne die man die Funktion wohl eher nicht verwenden könnte. Komische Vorstellung von „selbsterklärend“.
Der u-Präfix bei dem Docstring macht in Python 3 Code keinen Sinn.
Die Dokumentation erwähnt was von `DEFAULT_SETTINGS` und `data_path`, die beide lokal in der Funktion definiert sind. Solche Implementierungsdetails haben da nichts zu suchen.
Man definiert keine Konstanten in Funktionen.
Super sind auch die Konstanten für die Texte bei den Ausnahmen — nicht das man an der Stelle wo die Ausnahme ausgelöst wird, gleich sehen kann was da für ein Text drin steht, nein, man muss erst an den Anfang der Funktion gehen um den lesen zu können. Andererseits kann man von den Konstanten nicht darauf schliessen welche Texte in Ausnahmen möglich sind, denn es werden gar nicht alle verwendet, die da definiert sind.
Und diese ganzen unnötigen Prüfungen und Meldungen sind auch nur notwendig, weil das alles in einer Funktion steckt die eigentlich mehrere Funktionen erfüllt, statt nur eine.
Kommentar am Anfang sagt das Betriebssystemunabhängigkeit wichtig ist, und dann ist da ein Windowspfad mit \ in der Funktion. Und das dann auch noch völlig unnötig, denn .\dateiname ist das gleiche wie nur der Dateiname. Ob man das aktuelle Arbeitsverzeichnis mit .\ davor setzt oder nicht, macht genau Null Unterschied.
Das nächste Problem in der Richtung kann dann das öffnen einer Datei im Textmodus ohne die Angabe einer Kodierung werden. JSON-Dateien würde ich einfach im Binärmodus öffnen und das `json`-Modul den Rest machen lassen. Ich glaube das schrob ich hier schon mal.
Die Datei mit den Einstellungen wird auch dann geladen wenn man die gar nicht haben will, sondern die Default-Einstellungen erfragt.
Das Schreiben der Einstellungen gibt die auch zurück. Finde ich unerwartet, weil auch unnötig.
Es ist ja auskommentiert, aber: man prüft nur in ganz seltenen Fällen Werte auf ihren Typ und wenn dann auch nicht mit `type()` und ``==``. Damit macht man sich nicht nur das „duck typing“ kaputt, sondern schliesst auch noch alle abgeleiteten Typen aus, was man so selbst in statisch typisierten nicht machen würde.
Nicht das es schon `ValueError` und `TypeError` gäbe, die man verwenden könnte.
Ausnahmen/``raise`` scheinen auch noch nicht so ganz verstanden worden zu sein, wenn danach noch Code steht der niemals ausgeführt werden kann.
Luschtig ist auch „The arguments use is self-explanatory:“, gefolgt von einer Erklärung — ohne die man die Funktion wohl eher nicht verwenden könnte. Komische Vorstellung von „selbsterklärend“.
Der u-Präfix bei dem Docstring macht in Python 3 Code keinen Sinn.
Die Dokumentation erwähnt was von `DEFAULT_SETTINGS` und `data_path`, die beide lokal in der Funktion definiert sind. Solche Implementierungsdetails haben da nichts zu suchen.
Man definiert keine Konstanten in Funktionen.
Super sind auch die Konstanten für die Texte bei den Ausnahmen — nicht das man an der Stelle wo die Ausnahme ausgelöst wird, gleich sehen kann was da für ein Text drin steht, nein, man muss erst an den Anfang der Funktion gehen um den lesen zu können. Andererseits kann man von den Konstanten nicht darauf schliessen welche Texte in Ausnahmen möglich sind, denn es werden gar nicht alle verwendet, die da definiert sind.
Und diese ganzen unnötigen Prüfungen und Meldungen sind auch nur notwendig, weil das alles in einer Funktion steckt die eigentlich mehrere Funktionen erfüllt, statt nur eine.
Kommentar am Anfang sagt das Betriebssystemunabhängigkeit wichtig ist, und dann ist da ein Windowspfad mit \ in der Funktion. Und das dann auch noch völlig unnötig, denn .\dateiname ist das gleiche wie nur der Dateiname. Ob man das aktuelle Arbeitsverzeichnis mit .\ davor setzt oder nicht, macht genau Null Unterschied.
Das nächste Problem in der Richtung kann dann das öffnen einer Datei im Textmodus ohne die Angabe einer Kodierung werden. JSON-Dateien würde ich einfach im Binärmodus öffnen und das `json`-Modul den Rest machen lassen. Ich glaube das schrob ich hier schon mal.
Die Datei mit den Einstellungen wird auch dann geladen wenn man die gar nicht haben will, sondern die Default-Einstellungen erfragt.
Das Schreiben der Einstellungen gibt die auch zurück. Finde ich unerwartet, weil auch unnötig.
Es ist ja auskommentiert, aber: man prüft nur in ganz seltenen Fällen Werte auf ihren Typ und wenn dann auch nicht mit `type()` und ``==``. Damit macht man sich nicht nur das „duck typing“ kaputt, sondern schliesst auch noch alle abgeleiteten Typen aus, was man so selbst in statisch typisierten nicht machen würde.