ソフトウェアの使用に関連する一般的な設定を含むJSONファイルを開く必要があるコードを作成しています。これを構文解析して、値の一部を上書きする可能性があります。これらの設定は、設定を確認するために実行時に複数回アクセスする必要があります。設定ファイルを扱うためのデザイン
例:設定の1つは 'username'と 'password'です。存在しない場合はユーザーが入力する必要があります。別の設定は、「モードA」、「モードB」および「モードC」の可能な値を有する「ソフトウェアがどのように動作すべきか」に関する。
問題は私はプログラマーではなく、configsを管理するための良い設計を見つけることができません。 JSONファイルを開いて、必要なときに毎回書き直して保存するか、変数に解析して、この変数をメモリに保存してから(コードが実行される直前まで)保存してから保存してください最後のJSONファイル?
もう1つの質問は:私は変数に解析し、プログラムが終了するまでそれを保持することを好む場合はどうすればよいですか?この変数はいくつかの関数でアクセスする必要があるので、グローバル変数を使うべきだと思っていましたが、 "global"ステートメントを使ってグローバル変数に書き込むことは悪い習慣であり、混乱を招く可能性があります。例:
import json
config_global = None
def read_JSON_file():
config_file = open(r'config_file.json')
global config_global
config_global = json.load(config_file)
config_file.close()
def functionA():
global config_global
# Do something with config_global
def functionB():
global config_global
# Do something with config_global
def save_JSON_file()
config_file = open(r'config_file.json', 'w')
json.dump(config_global, config_file)
config_file.close()
read_JSON_file()
functionA()
functionB()
save_JSON_file()
私も、私は関数呼び出しの間で設定変数の参照を渡すことができると思ったが、私はすべてのためにそれを渡す必要がありますので、それは、良い解決策になる場合、私は知りません機能、毎回:
import json
def read_JSON_file() -> dict:
config_file = open(r'config_file.json')
config = json.load(config_file)
config_file.close()
return config
def functionA(config: dict):
# Do something with config
def functionB(config: dict):
# Do something with config
def save_JSON_file(config: dict)
config_file = open(r'config_file.json', 'w')
json.dump(config, config_file)
config_file.close()
parsed_config = read_JSON_file()
functionA(parsed_config)
functionB(parsed_config)
save_JSON_file(parsed_config)
はまた、私は完全にそれがどのように機能するかを理解していない、またはそれは良い解決策になる場合はシングルトンの使用に関連したものを、読みました。
最終的に、私はこれにどのような良い解決策があるのかを知りたいと思います。私の実装で直面する可能性のある問題を表示して、より良いソリューションを提案するように自由に落ちました。
ご協力いただきありがとうございます。
私はプログラマであり、私は構成を管理するための良い設計を理解できません。 – evilSnobu