2009-04-24 13 views
1

Ich habe vor kurzem begonnen, mit Ruby on Rails zu spielen, das Konvention über Konfiguration bevorzugt und auf sinnvolle Standardwerte angewiesen ist, um verschiedene Aspekte der Anwendung miteinander zu verknüpfen.Sensible Standardeinstellungen für die Konfiguration

Ich dachte, dass es nützlich sein könnte, wenn dieses Konzept der sinnvollen Standardkonfiguration in der allgemeinen Konfiguration für verschiedene Frameworks verwendet würde, dann könnte es einige Entwicklungskummer ersparen. Zum Beispiel möchte ich in einer .net-App normalerweise eine Ausnahme im Windows-Ereignisprotokoll unter Verwendung des Enterprise-Bibliotheksausnahmebehandlungsblocks protokollieren, aber wenn ich das Verhalten, das ich möchte, nicht explizit in einer Konfigurationsdatei angeben, wird sich EL beschweren . Ich denke stattdessen, wenn es benutzerdefinierte Konfiguration nicht finden kann, sollte es zu einer sinnvollen Standardkonfiguration zurückkehren, wie das Protokollieren meiner Ausnahme in dem Ereignisprotokoll.

Wäre dies ein gutes oder schlechtes Konzept für Frameworks, die für ihre Konfiguration verwendet werden?

Antwort

1

Ich arbeite viel mit einem Framework, das genau das tut. Mein Problem mit dieser Arbeitsweise ist:

  • Das Framework wuchs zu einer übermäßigen Anzahl von Konfigurationsschlüsseln, die tatsächlich nie in einer Konfigurationsdatei verwendet/festgelegt werden.
  • Verhalten der Software wird manchmal implizit, ich möchte explizit festlegen, dass das System sich auf eine bestimmte Art und Weise verhalten, anstatt es auf einen anderen Code-Pfad wegen einer 'Standard' Fallback.
  • Ein fehlgeschlagener Tippfehler im Konfigurationsschlüssel kann zu einer sehr langen Diagnose führen, bevor Sie herausfinden, was vor sich geht.
  • Wenn ich vergessen habe, einen Konfigurationswert zu setzen, lasse ich mir lieber von der Software erzählen, anstatt irgendeine Form von Verhalten anzunehmen, die ich gar nicht erst erfahren werde.

    Ich würde eine 'Vorlage' Konfigurationsdatei bevorzugen, in der ich ändere, was ich will und habe die unveränderten Einstellungen als Standard dienen.

    Die herauszufinden, welche Konvention die Software beim Debuggen ausgewählt hat, kann auch viel Zeit verschwenden.

    Verwandte Themen