[Python-de] Re: Code Style Review

Stefan Schwarzer <[email protected]>
Newsgroups gmane.comp.python.general.german
Message-ID <[email protected]>
On 2022-12-01 21:30, Marc Haber wrote:
> On Wed, Nov 30, 2022 at 10:47:53AM +0000, Matthias Urlichs wrote:
>> On 28.11.22 21:52, Marc Haber wrote:
>>> Die
>>> Alternative, jeder Funktion das Konfig-Dictionary als Parameter
>>> einzufüllen, finde ich noch schlechter lesbar. Wie ist in Python das
>>> normale Idiom für sowas?
>>
>> Du verpackst deine Funktionen in ein Objekt und gibst __init__ die
>> Konfig als Parameter.
> 
> Auch wieder so eine Klasse die man niemals instanziiert? Dann sind die
> "globals" in der Klasse gekapselt und nicht im Modul, das ist doch nur
> eine Begrifflichkeit.

Ich denke auch, das ist sehr ähnlich.

>> Globals wie "debug" oder halt "DEBUG" gehören sich nicht, finde ich;
>> dazu gibt es das "logging"-Modul, dem man (wenn's notwendig wird) eh
>> viel flexibler sagen kann, was es loggen soll, als mit einer Konstanten.
>> Außerdem ist "logging" weniger programmierfehleranfällig (wer hat noch
>> nicht versehentlich nicht-debug-Code unter ein "if debug:" gestellt …)
>> und visuell übersichtlicher. Und weniger tippen muss man auch …
> 
> Weniger tippen kann ich jetzt nicht sagen, ich hab hier jetzt:
> logger = logging.getLogger(__name__)↲
> loggingStreamHandler = logging.StreamHandler()↲
> logger.addHandler(loggingStreamHandler)↲
> und weiter unten (da wo die Kommandozeilenparameter gelesen werden):
>      if args.debug:
>          loggingStreamHandler.setLevel(10)↲
>          logger.setLevel(10)↲
> und noch weiter unten (da wo die Konfigurationsdatei gelesen wird):
>     if not args.debug:
>          loggingStreamHandler.setLevel(config.debuglevel)↲
>          logger.setLevel(config.debuglevel)↲

In manchen Fällen kommt man auch mit dem Aufruf von
`logging.basicConfig` aus. Ich habe mir deinen Code aber
nicht genau angesehen, inwieweit das für dich anwendbar ist.

>> Im Übrigen würde ich, wenn du mehr als einen Job gleichzeitig machen
>> willst, dringend empfehlen, das "threading"-Modul in die Tonne zu treten
>> und dir stattdessen "anyio" genauer anzusehen.
> 
> Das kann ich mir wohl nicht aussuchen, weil ich hier mit dem paho-Modul
> für MQTT koexistieren muss.

Ich kannte `anyio` noch nicht und habe jetzt nur das
Inhaltsverzeichnis überflogen. Das ist nach meinem Eindruck
schon eine ganze Menge Komplexitäts- und damit Lern-Aufwand,
und dann stellt sich immer die Frage, ob es sich lohnt, so
eine komplexe Abhängigkeit zu nutzen, wenn man vielleicht
nur einen ganz kleinen Anteil davon braucht.

Mit dem Logging-Modul ist das ähnlich, aber da ist es
immerhin so, dass es so bekannt und "universell" ist, dass
viele damit sowieso schon gearbeitet haben.

Viele Grüße
Stefan

_______________________________________________
python-de Mailingliste -- [email protected]
Zur Abmeldung von dieser Mailingliste senden Sie eine Nachricht an [email protected]
https://mail.python.org/mailman3/lists/python-de.python.org/
Mitgliedsadresse: [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.