任何人都可以就重构以下内容提出一些建议:
我有 3 个需要按顺序运行的函数,这些函数将从字典中获取参数
reports = {
'01': report_one,
'02': report_two,
'03': report_three
}
def func_one(report):
do_something()
def func_two(input):
do_something()
def func_three(report_name):
do_something()
我需要给用户两个选择:
我想出了以下内容:
if report == 'all':
for report_number, report_name in reports.items():
extract = func_one(report=report_number)
transform = func_two(extract)
func_three(transform, report_name=report_name)
else:
extract = func_one(report=report)
transform = func_two(extract)
func_three(transform, report_name=reports[report])
这让我觉得不太干净,所以我将这 3 个函数重构为另一个函数:
def report_selection(report_number, report_name):
extract = func_one(report=report_number)
transform = func_two(extract)
func_three(transform, report_name=report_name)
并在 if/else 中调用它:
if report == 'all':
for report_number, report_name in reports.items():
report_selection(report_number=report_number, report_name=report_name)
else:
report_selection(report_number=report_number, report_name=reports[report_number])
我在这里遗漏了什么吗?也许使用嵌套字典比使用 if/else 控制用户输入更有效?