Frage

Wenn Sie Ihre Anwendung ein paar (~ 5) Konfigurationsparameter nimmt, und die Anwendung wird durch nicht-Technologie Benutzern verwendet werden (das heißt KISS ), wie gehen Sie in der Regel Lesen Konfigurationsoptionen, und vorbei dann um die Parameter zwischen Objekten / Funktionen (Mehrere Module)?

Optionen Beispiele:. Eingabe- und Ausgabe Verzeichnisse / Dateinamen, Ausführlichkeit

Ich verwende optparse allgemein (Python) und übergeben um die Optionen / Parameter wie Argumente; aber ich frage mich, ob es häufiger eine Konfiguration Text zu verwenden Datei, die von allen Modulen Objekte direkt gelesen wird (aber dann ist das nicht wie ‚globales‘ Variablen mit ?, und ohne dass jemand ‚besitzen‘ den Zustand?).

Ein weiteres typisches Problem ist, Unit-Tests; wenn ich Unit-Test soll jeder Einzelmodul unabhängig ein bestimmtes Modul nur erfordern 1 aus den 5-Konfigurationsoptionen; Wie entkoppeln Sie in der Regel Einzel modules / Objekte aus dem Rest der Anwendung, und doch immer noch erlauben, es zu akzeptieren 1 oder 2 erforderlichen Parameter (Ist das Gerät zu testen Rahmen irgendwie aufrufen oder die Konfigurationsfunktionalität übernehmen)?

Meine Vermutung ist, dass es keine eindeutige richtige Weg, dies zu tun, aber es würde interessant sein, über verschiedene Ansätze, oder bekannte Muster zu lesen.

War es hilfreich?

Lösung 2

"Counts answer"
Please update these counts and feel free to add/modify.

Do you usually read config options via:
- command-line/gui options : 1
- a config text file       : 0


How do multiple modules/objects have access to these options?
- they receive them from the caller as an argument: 1
- read them directly from the config text file:     0


When doing unit-testing of a single module (NOT the "main" module)
and the module uses one option, e.g. input filename:
- unit-test framework provides own "simplified" config functionality: 0
- unit-test framework invokes main app's config functionality:        1


Do you use:
- optparse:  1
- getopt:    0
- others?


Please list any config management "design pattern" 
(usable in Python) and add a count if you use it - thanks.
- 
-

Andere Tipps

Haben Sie lesen in der Regel Konfigurationsmöglichkeiten über: - Befehlszeile / gui Optionen - eine Konfigurationstextdatei

Beide. Wir verwenden Djangos settings.py und logging.ini. Wir haben auch Kommandozeilen-Optionen und Argumente für die Optionen, die am häufigsten geändert werden.

Wie mehrere Module / Objekte haben Zugriff auf diese Optionen?

  • settings.py; logging.ini -. kann nicht sagen,
  • Unsere Optionen sind privat zum Hauptprogramm, und verwendet
    bauen Argumente an Funktionen oder Objektinitialisierer.

[die optparse Optionen zu teilen, ist ein großer Schmerz im Nacken und unnötig bindet eine Menge Dinge in eine untestable Chaos.]

Wenn Komponententests eines einzelnen Moduls zu tun (NICHT der „main“ Modul): (Zum Beispiel las Option Eingabedatei spezifiziert)

[Ich kann die Frage nicht analysieren. Ich nehme an, dies ist „wie testen Sie, wenn es Optionen?“]

Die Antwort ist - wir nicht. Da nur die wichtigste Methode Befehlszeilenoptionen analysiert, hat keine anderes Modul, Funktion oder Klasse eine Idee von Befehlszeilenoptionen. Es gibt keine dieses Modul „require 1 aus den 5 Konfigurations-Optionen“ Die Höhe der Moduls Klasse (oder Funktionen) haben gewöhnliche Argumente und basta.

Wir haben leider nur optparse verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top