Frage

Ich habe grüble über Konfigurationsdateien und ihre Beziehung für eine Weile Code jetzt und je nach Tag und Richtung des Windes zu ändern, meine Meinung zu sein scheint. Immer mehr, obwohl ich immer wieder zu der Erkenntnis komme Ich hatte zuerst während Lisp lernen: Es gibt kaum einen Unterschied zwischen Daten und Code. Dies scheint für Konfigurationsdateien doppelt wahr. Wenn mann im rechten Licht betrachtet ist ein Perl-Skript wenig mehr als eine Konfigurationsdatei für Perl. Dies neigt dazu, ziemlich schwere Folgen für Aufgaben wie QA und Arbeitsteilung zu haben wie die für die Änderung Konfigurationsdateien zuständig sein sollte.

Das Kriechen von Konfigurationsdatei vollwertiges Sprache ist in der Regel langsam und scheint von dem Wunsch getrieben werden, um ein generisches System zu haben. Die meisten Projekte scheinen mit wenigen Konfigurations Elemente klein zu beginnen, wie, wo Protokolle zu schreiben, wo für Daten zu suchen, Benutzernamen und Passwörter, etc. Aber dann beginnen sie zu wachsen: Eigenschaften beginnen zu können ein- oder ausgeschaltet werden, die Zeitpunkte und die Reihenfolge der Operationen beginnen gesteuert werden, und zwangsläufig jemand will, um es zu starten, Zugeben Logik (zB 10 verwenden, wenn die Maschine X und 15, wenn die Maschine ist Y). An einem bestimmten Punkt wird die Konfigurationsdatei eine domänenspezifische Sprache, und eine schlecht geschriebenen noch dazu.

Nun, da ich schweife habe auf die Bühne zu setzen, hier sind meine Fragen:

  1. Was ist der wahre Zweck einer Config Datei?
  2. Sollte versucht werden, zu halten Konfigurationsdateien einfach?
  3. Wer für die Herstellung verantwortlich sein sollte Änderungen an ihnen (Entwickler, Anwender, admins, etc.)?
  4. Sollte sie seine Quelle gesteuert (Siehe Frage 3)?

Wie ich bereits sagte meine Antworten auf diese Fragen verschieben ständig, aber im Moment bin ich denke:

  1. ein Nicht-Programmierer zu ermöglichen, sich ändern große Teile Verhalten schnell
  2. ja, alles, was nicht grob körnig sollte im Code
  3. sein
  4. Benutzer sollten dafür verantwortlich sein, Konfigurationsdateien und Programmierer sollten verantwortlich sein für eine Konfiguration Schicht zwischen Konfigurationsdateien und Code das gibt mehr feinkörnige Kontrolle die Anwendung
  5. nein, aber die feinkörnige Mittelschicht sein sollte
War es hilfreich?

Lösung

Sehr interessante Fragen!

Ich neige dazu, meine Config-Dateien zu einer sehr einfachen „Schlüssel = Wert“ -Format zu begrenzen, weil ich mit Ihnen, dass die Config-Dateien können sehr schnell werden ausgewachsene Programme voll zustimmen. Zum Beispiel jeder, der jemals versucht hat, auf „konfigurieren“ OpenSER kennen das Gefühl, du sprichst: Es ist nicht Konfiguration, es ist (schmerzhaft) Programmierung

.

Wenn Sie Ihre Anwendung müssen sehr sein „konfigurierbar“ in einer Weise, die man heute nicht mehr vorstellen kann, dann, was Sie wirklich brauchen, ist ein Plug-ins System . Sie müssen Ihre Anwendung in einer Art und Weise zu entwickeln, dass jemand anderes ein neues Plugin-Code kann und es in Ihre Anwendung in Zukunft anschließen.

Also, beantwortet Ihre Fragen:

  1. Was ist der wahre Zweck einer Config-Datei?

    Ich würde sagen, die Menschen zu ermöglichen, die Anwendung installieren zu können, einige Bereitstellung bezogene Parameter, wie Hostnamen, Anzahl der Threads, die Namen des Plugins, die Sie brauchen, und die Einsatz-Parameter für die tweek Plugins (überprüft Freeradius der Konfiguration für ein Beispiel für dieses Prinzip out), etc .. auf jeden Fall nicht an die Stelle der Geschäftslogik zum Ausdruck bringen.

  2. Sollte versucht werden, Config zu halten Dateien einfach?

    Auf jeden Fall. Wie Sie vorgeschlagen, „Programmierung“ in einer Konfigurationsdatei ist schrecklich. Ich glaube, es sollte vermieden werden.

  3. Wer sollte für Änderungen an sie verantwortlich sein (Entwickler, Anwender, Administratoren, etc.)?

    Im Allgemeinen würde ich sagen Admins, die die Anwendung bereitstellen.

  4. Sollten sie Quelle gesteuert (siehe Frage 3) werden?

    ich in der Regel nicht quell steuern die Konfigurationsdateien selbst, aber ich tun source-Steuerung eine Vorlage Konfigurationsdatei mit allen Parametern und ihre Standardwerte und Kommentare zu beschreiben, was sie tun. Wenn beispielsweise eine Konfigurationsdatei database.conf benannt ist, ich in der Regel eine Datei namens database.conf.template-Quelle steuern. Jetzt natürlich ich rede, was ich tue als Entwickler . Als Admin , kann ich möchte die aktuellen Einstellungen auf Quellcodeverwaltung, die ich für jede Installation gewählt haben. Zum Beispiel führen wir ein paar hundert Server aus der Ferne, und wir müssen den Überblick über ihre Konfigurationen halten: wir dies mit Quelle-Steuerung zu tun wählten

  5. .

Bearbeiten : Obwohl ich die oben um wahr zu sein für die meisten Anwendungen glaube, es gibt immer Ausnahmen, natürlich. Ihre Anwendung kann seinen Benutzern ermöglichen, dynamisch komplexe Regeln zu konfigurieren, zum Beispiel. Die meisten E-Mail-Clients können die Benutzer Regeln für die Verwaltung von E-Mails ihrer definieren (zB „alle kommen E-Mails von‚John Doe‘und mich nicht mit in das Feld An: verworfen werden sollte“). Ein weiteres Beispiel ist eine Anwendung, die dem Benutzer erlaubt, einen neuen Komplex kommerzielles Angebot zu definieren. Sie können denken, auch über Anwendungen wie Cognos, die zulassen, dass ihre Benutzer komplexe Datenbank-Berichte erstellen. Die E-Mail-Client wird wahrscheinlich bieten dem Anwender eine einfache Schnittstelle, die Regeln zu definieren, und dies wird eine komplexe Konfigurationsdatei (oder vielleicht sogar ein Stück Code) erzeugen. Auf der anderen Seite, die benutzerdefinierte Konfiguration für die kommerziellen Angebote kann in strukturierter Weise (weder eine einfachen Schlüssel = Wert Struktur noch einen Teil des Codes) in einer Datenbank gespeichert werden. Und einige andere Anwendungen könnten auch dem Benutzer erlauben, in Python oder VB oder einer anderen Automatisierungsfähige Sprache zu codieren. Mit anderen Worten ... der Leistung kann variieren.

Andere Tipps

Ok. Sie werden einige Nutzer haben, die eine wirklich einfache Konfiguration möchten, sollten Sie es ihnen geben. Zur gleichen Zeit werden Sie konstant Anfragen haben „Können Sie diese hinzufügen? Wie mache ich in der Config-Datei?“, Sehe ich nicht, warum Sie nicht beide Gruppen unterstützen können.

Das Projekt, das ich aktuell arbeite nutzt Lua für seine Konfigurationsdatei. Lua ist eine Skriptsprache, und es funktioniert ganz gut in diesem Szenario. Es ist verfügbar ein Beispiel für unsere Standardkonfiguration .

Sie werden bemerken, dass es in erster Linie Schlüssel = Wert Aussagen ist, in dem Wert der eingebauten Typen jeder Lua sein kann. Die komplizierteste Sache gibt es Listen, und sie sind nicht wirklich kompliziert (es ist nur eine Frage der Syntax).

Jetzt warte ich nur für jemanden zu fragen, wie sie ihren Server Port auf einen zufälligen Wert zu setzen, jedesmal wenn sie es starten ...

Vor kurzem arbeite ich bei einem Projekt, und ich erkennen, dass ich wollte conditionals in meiner Konfigurationsdatei haben - was nur ein ziemlich einfach gewesen zuvor hatte eine von der Form:


key = val
key2 = val
name = `hostname`

Ich wollte nicht eine Mini-Sprache schreiben, denn wenn ich es tat sehr sorgfältig konnte ich nicht die Flexibilität ermöglichen, die nützlich sein würde.

Stattdessen entschied ich, dass ich würde zwei Formen haben:

  1. Wenn die Datei mit started "#!" und war ausführbar Ich würde das Ergebnis der laufenden es analysieren.

  2. Sonst würde ich lese es als Service-Leistung

Das bedeutet, dass ich jetzt Menschen „Konfigurationsdateien“ erlauben, können zu schreiben, die wie folgt aussehen:

 #!/usr/bin/perl
if ( -x /bin/foo ) 
{
   print <<EOF;
foo=me
bar=you
EOF
}
else
{
   print <<EOF;
foo=bar
bar=foo
EOF
}

Auf diese Weise erhalte ich die Leistung einer dynamischen Konfigurationsdatei, wenn der Benutzer es verwenden möchte, und der Einfachheit nicht meine eigene Mini-Sprache zu schreiben.

Jedes (ausreichend lange Dauer) Konfigurationsdatei Schema wird schließlich eine Programmiersprache. Aufgrund all den Implikationen Sie beschreiben, ist es für die config-Datei Designer weise zu realisieren sie eine Programmiersprache ist das Authoring und planen, damit sie entsprechend belasten künftige Nutzer mit schlechten Vermächtnis.

Ich habe eine andere Philosophie über Konfigurationsdateien. Daten darüber, wie eine Anwendung sollte ausgeführt wird noch Daten , und gehören daher in einem Datenspeicher, nicht im Code (eine Konfigurationsdatei IMO-Code). Wenn Endbenutzer müssen die Daten ändern können, dann sollte die Anwendung eine Schnittstelle so zu tun geben.

Ich verwende nur Konfigurationsdateien auf Datenspeicher zu verweisen.

Sie könnten wenden Theorie der Berechnung zu definieren, was als Programmiersprache zählt. Wenn Sie Ihr Konfigurationsdateiformat Turing kompletter ist dann vernünftig gilt sie als eine Programmiersprache. Durch diese Definition ist ein Dateiformat zu beschreiben Ebenen der Sokoban zählt als Programmiersprache (siehe < a href = "http://web.cs.ualberta.ca/~joe/Preprints/Sokoban/index.html" rel = "nofollow noreferrer"> hier ). Es gibt noch andere Ebenen der Komplexität unter Turing Vervollständigen dass auch zählen können, wie zum Beispiel Reguläre Grammatiken und < a href = "http://en.wikipedia.org/wiki/Pushdown_automaton" rel = "nofollow noreferrer"> Kellerautomaten .

Eine andere Möglichkeit, um es zu betrachten ist, dass viele Konfigurationsdateien sind nur Daten Markup fähig, während eine richtige Programmiersprache der Lage sein müssen, um eine href zu implementieren <= „http://en.wikipedia.org/wiki/Algorithm“ rel = "nofollow noreferrer"> Algorithmen . Zum Beispiel ist JSON ein Config-Datei-Format, während ECMA Script eine Programmiersprache ist.

Hier sind meine Gedanken:

  1. Um das Laufzeitverhalten einer Anwendung zu ermöglichen, leicht modifiziert werden. Dies kann von Programmierern oder nicht Programmierer sein, je nach den Bedürfnissen. Dies kann während der Entwicklung sein, aber ich sehe oft Konfigurationsdateien als eine Möglichkeit, ein Programm flexibler an irgendeiner Stelle zu helfen.

  2. Ja. Ich denke, Konfigurationsdateien sollten so einfach wie möglich sein, angesichts der Einschränkung, dass Sie verschiedene Optionen benötigen unterschiedliche Verhaltensweisen Ihrer Laufzeit zu steuern. Ich ziehe die Gruppierung Konfigurationseinstellungen, und sie so weit wie möglich zu vereinfachen.

  3. Abhängig von was und warum die Änderung vorgenommen wird. Wenn Benutzer es zu gehen, zu ändern, ein Front-End soll sich von den Details vorgenommen wird, sich zu verstecken. Das gleiche gilt oft von Nicht-Entwickler im Allgemeinen.

  4. ich oft Quelle der „default“ Konfiguration steuern, haben aber eine Möglichkeit, dies für die tatsächliche Laufzeit pro System außer Kraft zu setzen.

Wie für das Hinzufügen von Logik in die Konfigurationsdatei - ich würde dies vermeiden. Ich denke, es ist besser, nur die Konfigurationsdatei Schalter hat auf der Logik in Ihrer Anwendung. Verhalten in Konfigurationsdateien führt zu einem Mangel an Wartbarkeit und das Verständnis, in meiner Erfahrung. Ich ziehe es stark Konfigurationsdateien so einfach wie möglich zu halten.

Ich neige dazu, mit der Prämisse dieser Frage zu einigen. Ich vermeide mich in Schwierigkeiten zu geraten früh durch die Vorhersage, dass dies geschehen wird, und daher nie rolle mein eigenes Konfigurationssystem.

  • Entweder ich die Config-facuility Betriebssysteme (wie zum Beispiel eines plist oder gconf oder was auch immer angemessen ist),
  • Oder eine einfache flache Datei, wie es so etwas wie ein aus dem Regal INI-Parser verarbeitet werden kann.
  • den sauren Apfel beißen und ein geringes Gewicht Sprache Parser stecken, in der Regel lua, manchmal tcl in die Anwendung,
  • oder speichern Daten in einer SQLite oder ähnliche relationalen Datenbank.

Und abfinden mich, damit zu leben, was auch immer entschieden ich, oder wenn ich kippe, refactor eine der oben genannten Entscheidungen zu verwenden, die besser passt die Anwendung.

Punkt ist, gibt es nicht wirklich einen Grund, eine home-grown Config-Lösung zu verwenden. Für eine Sache, ist es schwieriger, auf dem Benutzer ein neues, anwendungsspezifische Konfigurations Format hat zu lernen. Zum anderen profitieren Sie von all den vielen Bug-Fixes und Updates, die frei kommen, wenn ein Off-the-shelf-Lösung. Schließlich wird Feature-Kriechen zur Ruhe setzen, weil, na ja, man kann tatsächlich nicht nur ein Merkmal mehr hinzuzufügen, ohne wirklich eine Generalüberholung Ursache des Config-System zu tun ist nicht wirklich in der Hand in dem ersten Platz.

Es hängt davon ab, was Sie mit anderen Entwicklern im Team zustimmen. Verwenden Sie Konfigurationsdateien wie Konfigurationsdateien oder Sie ein Model Driven -Anwendung.

Die Symptome der Konfigurationsdatei eine Programmiersprache werden:

  • name = Wert-Paare beginnen aufeinander
  • abzuhängen
  • Sie haben das Bedürfnis, Flusskontrolle zu haben (ex. if (this) als )
  • Dokumentation für Konfigurationsdatei, um wesentlich wird die weitere Entwicklung zu tun (statt nur mit der Anwendung)
  • , bevor der Wert von Config gelesen wird, es erfordert einigen Kontext haben (das heißt Wert hängt von etwas externen Datei selbst config)

Config-Dateien Zoll immer ihren Weg hässlich, unlogisch „vollwertiges Programmiersprachen“ zu werden. Es dauert Kunst und Geschick gute Programmiersprachen zu entwerfen, und Konfigurations Sprachen Programmiersprache neigen gedreht horrend zu sein.

Ein guter Ansatz ist eine schön gestaltete Sprache zu verwenden, sagt Python oder Ruby, und verwenden Sie es ein DSL für Ihre Konfiguration. Auf diese Weise Ihrer Konfigurationssprache kann auf der Oberfläche einfach bleiben, sondern in tatsächlich die vollwertige Programmiersprache sein.

Ich glaube, Ihre Frage ist sehr relevant ist die Hinwendung zu „fließend Schnittstellen“ gegeben. Viele Entwickler haben in Bezug auf XML konfiguriert Anwendungen „das Licht gesehen“. XML kann sehr ausführlich und schwierig sein, richtig zu bearbeiten (vor allem, wenn kein Schema zur Verfügung gestellt). eine fließende Schnittstelle ermöglicht es der Entwickler die Anwendung in einer domänenspezifischen Sprache mit Hilfe einiger Schlüssel-Wert-Paare aus einer einfachen Text-Konfigurationsdatei (oder vielleicht Befehlszeilenparameter) zu konfigurieren. Es macht auch sehr einfach, sie zum Einrichten und Konfigurieren neue Instanzen der Anwendung zum Testen oder was auch immer.

Hier sind meine Antworten auf Ihre Frage:

  • Was ist der wahre Zweck einer Config Datei?

Eine Konfigurationsdatei ist eine Möglichkeit, dem Benutzer zu ermöglichen, das Verhalten ihres Programms zur Laufzeit anpassen.

  • Sollte versucht werden, zu halten Konfigurationsdateien einfach?

Im Idealfall würde ich denken, dass Konfigurationsdateien sollten zumindest durch eine fließend-Schnittstelle ergänzt werden, um das Programm zu konfigurieren (dies ist nützlich in vielerlei Hinsicht). Wenn Sie eine Konfigurationsdatei benötigt, dann sollte es sehr einfach gehalten werden, nichts anderes als Schlüssel-Wert-Paaren.

  • Wer für die Herstellung verantwortlich sein sollte Änderungen an ihnen (Entwickler, Anwender, admins, etc.)?

Ich denke, die Antwort auf diese Frage zu Ihrer Organisation abhängt. Es sollte in der Verantwortung der Person, die Bereitstellung von Software, um sicherzustellen, dass es richtig konfiguriert ist.

  • Sollten sie Quelle gesteuert werden (siehe Frage 3)?

Ich werde diese Antwort von jemandem stehlen sonst :) Ich mag die Idee, eine Template-Konfiguration in der Quellcodeverwaltung zu speichern und für jeden lokalen Bedürfnis des Nutzers zu ändern. Die Chancen stehen eine Entwickler-config-Datei eines anderen Entwicklers Alptraum ist, so dass es am besten ist, die Dinge zu verlassen, die aus der Quellcodeverwaltung durch Benutzer variieren. eine Vorlage zu haben, ist auch eine gute Möglichkeit, die Person die Bereitstellung der Anwendung (oder andere Entwickler) genau sehen, welche Werte gelten für die Konfigurationsdatei.

zu lassen

Ich habe Python-Programme zu sehen, wo die Konfigurationsdatei ist Code. Wenn Sie etwas tun müssen, um speziell nicht (conditionals, etc.) es sieht nicht viel anders aus anderen Konfigurations Stilen. z.B. Ich konnte eine Datei config.py mit Sachen machen wie:

num_threads = 13
hostname = 'myhost'

und die einzige Belastung für den Benutzer, verglichen mit (sagen wir) INI-Dateien ist, dass sie brauchen ‚zu setzen‘ um Saiten. Kein Zweifel, Sie könnten das Gleiche in anderen interpretierten Sprachen tun. Es gibt Ihnen unbegrenzte Möglichkeit, Ihre Konfigurationsdatei, wenn nötig zu erschweren, auf die Gefahr von möglicherweise Ihre Benutzer erschrecken.

Ja, Konfigurationsdateien sollten einfach sein. Sie sollten keine ‚Logik‘ selbst enthalten - man denke an sie als eine Liste von Ausdrücken in if-Anweisungen, nicht die bedingten Aussagen in ihrer Gesamtheit

.

Sie sind da, dem Benutzer zu ermöglichen, welche der Optionen in der Anwendung codiert, zu entscheiden, sollte verwendet werden, so versuchen Sie nicht, sie kompliziert zu machen, wird es sein selbstzerstörerischen am Ende - Sie können schriftlich am Ende einfache Konfigurationsdateien zu steuern, wie die ursprüngliche Konfigurationsdatei anders konfiguriert werden soll!

Einer der Zwecke der „Oslo“ Arbeit an Microsoft zu ermöglichen (wenn auch nicht erforderlich) Lösung dieses Problems.

  1. Eine Anwendung wäre es schließt mit Modellen von neuen Komponenten versandt. Es wäre auch bestehende Modelle. Zum Beispiel könnte es einen Web-Service, so dass es das Systemmodell eines Webdienstes wiederverwenden kann.
  2. Die Modelle gehören Metadaten beschreiben sie, einschließlich genügend Informationen für Werkzeuge, um sie, für den Zugriff auf entweder textlich oder grafisch dar.
  3. Teile der Modelle entsprechen „Konfiguration“

Das bedeutet, dass das Äquivalent der heutigen Konfigurationsdateien reich genug sein kann, sowohl textliche und grafische Bearbeitung ihrer Konfiguration zu unterstützen. Das grafische Tool wird mit "Oslo" (Codename "Quadranten") geliefert werden.

Ich werde die konträren sein und senden es nur eine Sprache, wenn es mehr verkörpert als von XML dargestellt werden kann; oder auch, wenn XML wird als eine Sprache sein.

Alternativ können die meisten Konfigurationsdateien gedacht als Klassen, sondern nur mit Eigenschaften und keine Methoden. Und ohne Methoden, ich glaube nicht, es ist eine Sprache.

Letztlich „Sprache“ ist eine matschig Abstraktion, aber ja, sind die Kanten nicht eindeutig.

Der Code unserer Anwendungen wird weniger wichtig ... Es scripting ist, gibt es alle Arten von Attributen, die das Verhalten von Klassen, Methoden, Methodenargumente und Eigenschaften definieren. Benutzer können Datenbank-Trigger und Datenbankbeschränkungen definieren. Es kann sehr kompliziert Konfigurationsdateien sein. Manchmal kann der Benutzer XSLT stylsheets definiert Eingabe und Ausgabe zu manipulieren, weil unsere Systeme müssen offen sein (SOA). Und es gibt Sachen wie Bizztalk, die zu komplex Konfiguration benötigt. Anwender können komplexen Workflows definieren.

Wir haben besseren Code zu schreiben, mit diesem komplexen Umfeld zu beschäftigen, so dass der Code unserer Anwendungen wird immer wichtiger ...

Ich bin ein großer Fan von Python-Programme als Konfigurationsdateien verwenden, vor allem für Dämonen. Ich mag die Klebrigkeit der Herstellung den Dämon vollständig mit Ausnahme des „Konfigurations-Port“ leer von Konfiguration zu übernehmen. Das Python Programm verbindet sich dann mit dem Dämon und schreitet Objekte in dem Daemon zu erstellen und zu verbinden, sie zusammen, um die gewünschte Konfiguration zu erstellen. Sobald alles eingerichtet ist, kann der Dämon dann eigene darauf laufen gelassen werden. Die Vorteile, natürlich sind, dass Sie einen vollwertigen Programmiersprache erhalten Sie Ihre Konfigurationsdateien zu schreiben und da Sie bereits eine Möglichkeit haben, an den Dämon aus einem anderen Programm zu sprechen, können Sie es für das Debuggen und bekommen Statistiken verwenden. Der größte Nachteil ist, die mit Nachrichten von einem anderen Programm beschäftigen jederzeit kommen in.

Config-Datei : "Was ist mein Ziel?"
Sie : "Die Butter konfigurieren."
Config-Datei : "Ok ..."
Config-Datei : "Was ist mein Ziel?"
Sie : "Sie konfigurieren Butter."
Config-Datei : "Oh mein Gott"

  1. Es gibt keinen „wahren Zweck“ eine Konfigurationsdatei. Sein was auch immer macht Sinn für Ihre Anwendung. In der Regel Dinge, die (oder unterschiedlich sein können) zwischen Maschinen unterscheiden und in der Mitte Ihrer Anwendung nicht ausgeführt werden sollten wahrscheinlich in einer Konfigurationsdatei ändern. Defaults, Ports und Adressen für andere Dienste sind alle großen Kandidaten. Schlüssel und Geheimnisse sind auch große Kandidaten sollten aber getrennt von der normalen Konfiguration aus Sicherheitsgründen behandelt werden. Ich bin nicht einverstanden, dass der Zweck einer Konfigurationsdatei schnelle Änderungen zu ermöglichen, ist gemacht werden. Der Zweck sollte Flexibilität bei der Einrichtung Ihrer Anwendung zu ermöglichen, sein. Wenn eine Konfigurationsdatei ist ein schnell Art und Weise leicht, diese Flexibilität zu ermöglichen, um so besser -. Aber man sollte nicht Ihre Konfigurationsdateien beabsichtigen, häufig als zu ändern

  2. Ja und nein. Sollten Sie atempt Ihre Anwendung Code einfach zu machen? Ja. Sie sollen alles, was man einfach und auf den Punkt zu schreiben versuchen, zu machen. Nicht komplizierter als es sein muss. Gleiches gilt für Ihre Konfiguration. Dies ist jedoch sehr anwendungsspezifisch. Hartzucodieren was in Config sein sollte, weil es Ihre config „zu kompliziert“ machen würde, ist schlechtes Design. In der Tat, zu versuchen, „die Dinge einfach zu halten“ Deshalb Konfigurationsdateien sind ein riesiges Chaos enden. Manchmal ist der einfachste Schritt modularisieren. Deshalb ist Ihre Konfigurationsdateien sollten in einem bekannten Mehrzweck Programmierung Langauge geschrieben werden - nicht eine schreckliche Konfigurationssprache (sprich: alle "-Konfiguration Sprachen" saugen ).

  3. Auch wer soll Konfigurationsdateien werden zu modifizieren ist völlig abhängig von der Anwendung. Aber ich stimme mit miniquark, wer auch immer die Anwendung ist die Bereitstellung sollte verantwortlich für die Konfiguration sein.

  4. Quellcodeverwaltung alles, was Sie können. Quellcodeverwaltung ist groß. Sie können Sachen wieder super einfach rollen und Sie haben eine vollständige Auflistung der Änderungen, die Sie gemacht haben und eine Aufzeichnung, die diese Änderungen vorgenommen. Warum also nicht?

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