[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]