Argument übergeben Strategie - Umwelt-Variablen vs. Kommandozeile

Meisten Anwendungen, die wir Entwickler schreiben müssen extern eingestellt, die beim Systemstart. Wir übergeben die Datei-Pfade, die Namen der pipe, TCP/IP-Adressen etc. Bisher habe ich mit Befehlszeile, übergeben Sie diese an den appplication ins Leben gerufen. Ich hatte zum Parsen der Kommandozeile in main und die Argumente an, wo Sie gebraucht werden, das ist natürlich eine gutes design, aber ist schwer zu pflegen für eine große Anzahl von Argumenten. Vor kurzem habe ich beschlossen, die Umgebungsvariablen Mechanismus. Sie sind global und von überall aus zugänglich, die weniger elegant aus architektonischer Sicht, aber begrenzt die Menge an code, die.

Diese sind mein erstes (und möglicherweise Recht flach) Eindrücke auf beide Strategien aber ich würde gerne Meinungen zu hören von erfahrenen Entwicklern -- Was sind die ups und downs der Verwendung von Umgebungsvariablen und Kommandozeilen-Argumente übergeben werden Argumente für ein Prozess? Ich würde gerne berücksichtigen die folgenden Fragen:

  1. design Qualität (Flexibilität/Wartbarkeit),
  2. Speicher Einschränkungen,
  3. Lösung Portabilität.

Bemerkungen:

Ad. 1. Dies ist der wichtigste Aspekt der mich interessiert.

Ad. 2. Das ist ein bisschen pragmatisch. Ich weiß von einigen Einschränkungen unter Windows, die derzeit riesige (über 32kB für beide Kommandozeile und environment block). Ich denke, dies ist nicht ein Problem, aber, da Sie nur verwenden sollten, eine Datei zu übergeben, Tonnen von Argumenten, wenn Sie brauchen.

Ad. 3. Ich weiß fast nichts von Unix, also bin ich nicht sicher, ob beide Strategien sind als ähnlich zu bedienen wie unter Windows. Erläutern Sie dies, wenn Sie bitte.

  • Würden Sie geben mehr Einzelheiten, als in der tatsächlichen Anzahl der Parameter? und wenn es Gruppierungen, um Sie oder sind Sie alle zufällig? und welche Sprache ist das? java, c++, etc... Der Grund, warum ich verlange, dass die level-of-detail ist, dass, während es könnte ein problem in jeder Sprache, es kann eine Sprache sein, die Durchführung spezifische Lösung, die Sie nicht bewusst sind.
  • Nur zu schweigen von *nix-Betriebssystemen, haben Sie nichts, wie "Globale Umgebungsvariablen" und jeder env var vererbt vom übergeordneten Prozess zum untergeordneten Prozess an der Gabel auf Zeit. Also, "global" ist das nicht ein pro für die env-var über command line, zumindest für Diejenigen, die OSs.
  • Hi, @jamesDrinkard. Ich bin interessiert im Allgemeinen Ansatz. Wenn Sie überholen wollte 20 verschiedene beschriftet string - /integral - /real-Zahl-Argumente aus einem Python-Skript ausgeführt wird, indem eine 32-bit-interpreter auf eine 64-bit-Anwendung in C++ geschrieben, welche Methode würden Sie verwenden?
  • Hi, @shr. Danke für die *nix beachten. Raymond wies darauf hin, unten, für diese Aufgabe eine solche globalität ist nicht ein pro an alle.
  • Dies könnte relevant sein und setzt Umgebungsvariablen: devcenter.heroku.com/articles/config-vars
InformationsquelleAutor Janusz Lenar | 2011-09-16
Schreibe einen Kommentar