Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.python > #5882

[Python-de] Re: Code Style Review

From Marc Haber <mh+python-de@zugschlus.de>
Newsgroups de.comp.lang.python
Subject [Python-de] Re: Code Style Review
Date 2022-12-01 21:16 +0100
Message-ID <Y4kLkGxr+4DhQto0@torres.zugschlus.de> (permalink)
References <tm2jhn$1k5h8$1@news1.tnib.de> <25b8d1d4-d6e2-22ee-4bed-ec76227fa65d@sschwarzer.net>

Show all headers | View raw


On Tue, Nov 29, 2022 at 06:18:38PM +0100, Stefan Schwarzer wrote:
> Erst mal zum Thema der Konfigurations-Speicherung, was in
> dem Diskussions-Thread auch aufgegriffen wurde. Da in Python
> Module und Klassen natürliche Singletons sind, wäre mein
> Vorschlag, die Konfigurations-Daten in einer Klasse zu
> speichern, also
> 
> ```
> class config:
> 
>     # Listener IP address and port of MQTT server.
>     ip_address = None
>     port = None
> 
>     # If `True`, print debugging output.
>     debug = False
> 
>     ...
> ```
> 
> Du kannst einfach von überall aus dem Modul auf das
> `config`-Objekt zugreifen und brauchst auch kein `global`.
> Die Klasse wird nie instanziiert, sondern nur als Namespace
> benutzt.

Habe ich ausprobiert, funktioniert. Nur pylint meckert:
too-few-public-methods: Too few public methods (0/2)

Ist das sowas ähnliches wie eine @dataclass?

Und eigentlich ist das doch auch nur ein Satz globaler Variablen auf
Steroiden.

> Der Ansatz hat gegenüber dem `config`-Dictionary auch den
> Vorteil, dass du dokumentieren kannst, wofür die einzelnen
> Werte gedacht sind. Ich halte es für gut, in `config` alle
> Werte auf Default-Werte zu setzen, selbst wenn diese mangels
> eines sinnvollen Defaults erst mal `None` sind. Das hat den
> Vorteil, dass man sehen kann, was jemals gesetzt wird und
> reduziert die Verwirrung, weil man nicht zwischen `None` und
> "gar nicht gesetzt" unterscheiden muss.

Andererseits muss ich halt jede auftretende Konfigurationsvariable an
mindestens zwei zusätzlichen Stellen explizit hinschreiben, während sich
das bei einem confighash direkt selbsttätig ergibt.

> Ich würde die Kommandozeilen-Optionen von den
> `config`-Attributen getrennt halten, um nicht die Konzepte
> Kommandozeilen-Parsen und Konfiguration zu vermischen. Das
> ist aber vielleicht ein Detail.

Ich finde es eigentlich ganz gut, wenn es für Konfigurationsvariablen
auch eine entsprechende Kommandozeilenoption gibt. Auf diese Weise kann
man die regelmäßig verwendeten Optionen in die Konfigurationsdatei
schreiben und wenn man es doch mal anders braucht auf der Kommandozeile
überschreiben.

> Zu den Debug-Ausgaben: Da kannst du den Code etwas
> vereinfachen, indem du die Abfrage des Debug-Flags in eine
> Funktion verschiebst, die du aufrufst.

Das habe ich jetzt mit dem Logging-Modul gemacht. Der Nachteil ist nur
dass ich jetzt meiner Tabellenklasse selbst beibringen muss, sich
auszudrucken, weil ich sonst durch die kompletten Bewegungen des
Ausdrucks gehe und im Zweifel nur die eigentliche Ausgabe unterdrücke.

> Für `element` würde ich statt Dictionarys `namedtuple`s oder
> Instanzen von `SimpleNamespace` verwenden. Allgemein sehen
> Zugriffe auf Dictionarys aus meiner Sicht immer recht
> "noisy" aus.

Das lasse ich erstmal, habe mir das notiert.

Grüße
Marc

-- 
-----------------------------------------------------------------------------
Marc Haber         | "I don't trust Computers. They | Mailadresse im Header
Leimen, Germany    |  lose things."    Winona Ryder | Fon: *49 6224 1600402
Nordisch by Nature |  How to make an American Quilt | Fax: *49 6224 1600421

Back to de.comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Code Style Review Marc Haber <mh+usenetspam1118@zugschl.us> - 2022-11-28 16:19 +0100
  [Python-de] Re: Code Style Review c.buhtz@posteo.jp - 2022-11-28 15:37 +0000
    [Python-de] Re: Code Style Review Christopher Arndt <chris@chrisarndt.de> - 2022-11-28 16:48 +0100
      [Python-de] Re: Code Style Review c.buhtz@posteo.jp - 2022-11-28 19:53 +0000
      Re: [Python-de] Re: Code Style Review Marc Haber <mh+usenetspam1118@zugschl.us> - 2022-11-28 22:07 +0100
        [Python-de] Re: Code Style Review Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2022-11-29 18:51 +0100
          [Python-de] Re: Code Style Review Marc Haber <mh+python-de@zugschlus.de> - 2022-11-29 21:44 +0100
            [Python-de] Re: Code Style Review Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2022-11-29 23:16 +0100
    Re: [Python-de] Re: Code Style Review Marc Haber <mh+usenetspam1118@zugschl.us> - 2022-11-28 21:52 +0100
      [Python-de] Re: Code Style Review c.buhtz@posteo.jp - 2022-11-28 22:38 +0000
        Re: [Python-de] Re: Code Style Review Enrik Berkhan <Enrik.Berkhan@inka.de> - 2022-11-29 06:03 +0000
        Re: [Python-de] Re: Code Style Review Marc Haber <mh+usenetspam1118@zugschl.us> - 2022-11-29 15:22 +0100
          [Python-de] Re: Code Style Review c.buhtz@posteo.jp - 2022-11-29 14:39 +0000
      [Python-de] Re: Code Style Review Matthias Urlichs <matthias.urlichs@noris.de> - 2022-11-30 10:47 +0000
        [Python-de] Re: Code Style Review Marc Haber <mh+python-de@zugschlus.de> - 2022-12-01 21:30 +0100
          [Python-de] Re: Code Style Review Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2022-12-02 00:07 +0100
            Re: [Python-de] Re: Code Style Review "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2022-12-03 14:32 +0100
          [Python-de] Re: Code Style Review Matthias Urlichs <matthias.urlichs@noris.de> - 2022-12-02 09:29 +0000
            [Python-de] Re: Code Style Review Marc Haber <mh+python-de@zugschlus.de> - 2022-12-02 18:02 +0100
    [Python-de] Re: Code Style Review Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2022-11-29 18:33 +0100
  [Python-de] Re: Code Style Review Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2022-11-29 18:18 +0100
    [Python-de] Re: Code Style Review Hans-Peter Jansen <hpj@urpla.net> - 2022-11-30 15:52 +0100
    [Python-de] Re: Code Style Review Marc Haber <mh+python-de@zugschlus.de> - 2022-12-01 21:16 +0100
      [Python-de] Re: Code Style Review Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2022-12-01 23:58 +0100
        [Python-de] Re: Code Style Review Marc Haber <mh+python-de@zugschlus.de> - 2022-12-02 18:10 +0100
          Re: [Python-de] Re: Code Style Review "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2022-12-03 14:36 +0100

csiph-web