前提・実現したいこと
プログラムの設計に関する質問です。
XMLファイルがあり、コマンドライン引数にアクション(--add, --mod, --del) + パス(XPATH)を入力してもらい、
それぞれパス(値)の追加。値の変更。パス(値)の削除を行うpythonプログラムを作成しております。
add, mod, removeの処理を行う関数を作成し、それぞれ該当する処理を行っているのですが
各関数では似たような処理(ファイルを開く、パスの存在確認、ファイル書き込み)を行っているため、
プログラム的に美しくないです。どのように設計すれば良いものでしょうか?
read、write関数を作成して共通化するのが一般的なのでしょうか?
オブジェクト指向をあまり理解できていないのですが、XMLFileクラスなどを作成したりするのが良いのでしょうか?
プログラム作成の諸先輩方のアドバイスをいただきたいです。
恐れ入りますがご教示のほど、よろしくお願いいたします。
※ソースコードはざっくりとしたイメージでスミマセン。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
def add(path): # 1. ファイルを開く処理 # 2. パスの存在確認処理 # 3. 追加処理 # 4. ファイルへ書き込み処理 pass def mod(path): # 1. ファイルを開く処理 # 2. パスの存在確認処理 # 3. 変更処理 # 4. ファイルへ書き込み処理 pass def del(path): # 1. ファイルを開く処理 # 2. パスの存在確認処理 # 3. 削除処理 # 4. ファイルへ書き込み処理 def check_args(): parser = argparse.ArgumentParser() group = parser.add_mutually_exclusive_group() group.add_argument('--add', action='store_true') group.add_argument('--mod', action='store_true') group.add_argument('--del', action='store_true') parser.add_argument('--path', required=True) args = parser.parse_args() if not any([args.add, args.mod, args.remove]): parser.error('arg error') return args def main(): args = check_args() if args.add: ret = add(args.path) elif args.mod: ret = mod(args.path) elif args.del: ret = del(args.path) else: print('invalid') ret = 1 return ret if __name__ == '__main__': sys.exit(main())
試したこと
補足情報(FW/ツールのバージョンなど)
回答3件
あなたの回答
tips
プレビュー