如何优化功能标志切换代码?支持多标志扩展与控制台输入
功能标志管理优化实现
核心优化点
- 用字典存储功能标志,新增标志只需添加字典键值对,无需修改逻辑,符合DRY原则
- 统一输入处理逻辑,消除冗余分支
- 修正拼写错误:
toogle_flag改为toggle_flag,flase改为False - 支持灵活输入:
none(全禁用)、all(全启用)、单个标志名、多个空格分隔的标志名
完整代码实现
# 初始化功能标志,新增标志直接在这里添加键值对即可 feature_flags = { "flag_a": False, "flag_b": False } def toggle_flag(flag_name): """切换指定标志的启用/禁用状态""" if flag_name in feature_flags: feature_flags[flag_name] = not feature_flags[flag_name] print(f"已切换 {flag_name} 状态为: {feature_flags[flag_name]}") else: print(f"警告:不存在标志 {flag_name}") def update_flags(input_str): """根据输入字符串更新所有标志状态""" input_tokens = input_str.strip().lower().split() if not input_tokens: print("输入不能为空") return # 处理特殊指令 if "none" in input_tokens: for flag in feature_flags: feature_flags[flag] = False print("所有标志已禁用") return if "all" in input_tokens: for flag in feature_flags: feature_flags[flag] = True print("所有标志已启用") return # 处理单个或多个标志切换 for flag in input_tokens: toggle_flag(flag) # 控制台交互逻辑 if __name__ == "__main__": while True: user_input = input("请输入标志指令(none/all/单个/多个标志,输入q退出):") if user_input.lower() == "q": print("退出程序") break update_flags(user_input)
代码说明
- 标志存储:用字典
feature_flags统一管理,新增flag_c/flag_d只需在字典中添加"flag_c": False即可,无需修改任何逻辑代码 - 输入处理:将输入字符串转为小写并拆分,统一处理不同输入格式
- 特殊指令处理:
none和all直接遍历字典批量设置状态,避免重复代码 - 切换逻辑:单独封装
toggle_flag函数,负责单个标志的状态切换,逻辑复用 - 交互循环:支持持续输入,输入
q可退出程序
内容的提问来源于stack exchange,提问作者tech spam
相关产品推荐
相关产品推荐

