You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

重构重复Python代码:提取通用逻辑,自定义特定查询逻辑

重构方案:用回调函数封装可变逻辑

你可以把try/except块内的可变逻辑抽成回调函数,作为参数传入通用方法,这样就能把重复的25个方法合并成一个通用方法,只需要为每种不同逻辑写对应的回调函数即可。

1. 通用方法实现

def generic_lookup(findings, count, client, value, check_func):
    for finding in findings["Findings"]:
        for resource in finding["Resources"]:
            # 原有的固定遍历与发布逻辑
            if finding["Status"] == "DEPLOYED":
                if count == 0:
                    publish(
                        finding["Title"],
                        resource["Id"],
                        finding["Status"],
                    )
            else:
                if count == 0:
                    publish(
                        finding["Title"],
                        resource["Id"],
                        finding["Status"],
                    )
                # 调用传入的回调处理可变查询逻辑
                try:
                    # 回调函数返回True时,触发原逻辑的return False
                    if check_func(client, resource, value):
                        return False
                except ClientError:
                    pass
    return True

2. 定义不同的回调函数

针对每种查询逻辑,写一个轻量的回调函数封装细节:

示例1:直接用资源ID作为查询参数

def check_full_resource_id(client, resource, value):
    lookup_param = resource["Id"]
    lookup_result = client.LOOKUP_METHOD_A(TARGET_ID=lookup_param)
    return value in json.dumps(lookup_result["RESULT_KEY_A"])

示例2:拆分资源ID后作为查询参数

def check_split_resource_id(client, resource, value):
    lookup_param = resource["Id"].split(":")[3]
    lookup_result = client.LOOKUP_METHOD_B(TARGET_PART=lookup_param)
    return value in json.dumps(lookup_result["RESULT_KEY_B"])

3. 调用通用方法

原来的每个重复方法,现在只需调用通用方法并传入对应回调:

# 使用第一种查询逻辑
result_a = generic_lookup(findings, count, client, value, check_full_resource_id)

# 使用第二种查询逻辑
result_b = generic_lookup(findings, count, client, value, check_split_resource_id)

方案优势

回调函数完整封装了「特定方法调用、参数处理、结果判断」的可变部分,通用方法只负责固定的遍历、发布和异常捕获逻辑,既消除了代码重复,又保留了每种查询逻辑的独立性。

内容的提问来源于stack exchange,提问作者flowermia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 13:50:20