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

如何简化重复代码并提升运行效率?附set_ElementValue调用示例

简化重复代码的几种方案

1. 预计算公共值+批量循环处理

先把重复用到的计算结果提前算出,避免多次重复运算,再将同类参数分组,用循环批量调用目标方法:

// 预计算公共差值与对应结果,减少重复计算
var deltaAlt = altitude_value - targetAltitude;
var angleVal1345 = (deltaAlt * 1345 / 10000).ToString();
var angleVal1594 = (deltaAlt * 1594 / 10000).ToString();
var tofVal = TimeOfFlight.ToString();
const string simulatorTag = "[Simulator]";

// 批量设置系数1345对应的角度参数
var angleUids1345 = new[] {
    Utils_Obj.Sim.fa_11.XData.XOffsetAngle1.getUid(),
    Utils_Obj.Sim.fa_11.YData.YOffsetAngle1.getUid()
};
foreach (var uid in angleUids1345) {
    Utils_Obj.set_ElementValue(uid, simulatorTag, angleVal1345);
}

// 批量设置系数1594对应的角度参数
var angleUids1594 = new[] {
    Utils_Obj.Sim.fa_11.XData.XOffsetAngle2.getUid(),
    Utils_Obj.Sim.fa_11.YData.YOffsetAngle2.getUid()
};
foreach (var uid in angleUids1594) {
    Utils_Obj.set_ElementValue(uid, simulatorTag, angleVal1594);
}

// 批量设置TOF相关参数
var tofUids = new[] {
    Utils_Obj.Sim.fa_11.XData.XDynamicTOF_max.getUid(),
    Utils_Obj.Sim.fa_11.YData.YDynamicTOF_max.getUid(),
    Utils_Obj.Sim.fa_7.XData.XDynamicTOF_max.getUid(),
    Utils_Obj.Sim.fa_7.YData.YDynamicTOF_max.getUid()
};
foreach (var uid in tofUids) {
    Utils_Obj.set_ElementValue(uid, simulatorTag, tofVal);
}

2. 配置数组统一管理,扩展性更强

如果后续可能新增更多参数,把每个需要设置的项做成包含uid和对应值的配置对象,遍历配置数组完成所有调用:

var deltaAlt = altitude_value - targetAltitude;
var angleVal1345 = (deltaAlt * 1345 / 10000).ToString();
var angleVal1594 = (deltaAlt * 1594 / 10000).ToString();
var tofVal = TimeOfFlight.ToString();
const string simulatorTag = "[Simulator]";

// 定义所有配置项,清晰对应每个参数的取值
var configs = new List<(string uid, string value)> {
    (Utils_Obj.Sim.fa_11.XData.XOffsetAngle1.getUid(), angleVal1345),
    (Utils_Obj.Sim.fa_11.XData.XOffsetAngle2.getUid(), angleVal1594),
    (Utils_Obj.Sim.fa_11.YData.YOffsetAngle1.getUid(), angleVal1345),
    (Utils_Obj.Sim.fa_11.YData.YOffsetAngle2.getUid(), angleVal1594),
    (Utils_Obj.Sim.fa_11.XData.XDynamicTOF_max.getUid(), tofVal),
    (Utils_Obj.Sim.fa_11.YData.YDynamicTOF_max.getUid(), tofVal),
    (Utils_Obj.Sim.fa_7.XData.XDynamicTOF_max.getUid(), tofVal),
    (Utils_Obj.Sim.fa_7.YData.YDynamicTOF_max.getUid(), tofVal)
};

// 遍历配置项完成所有设置
foreach (var (uid, value) in configs) {
    Utils_Obj.set_ElementValue(uid, simulatorTag, value);
}

3. 封装辅助函数,复用性更高

如果这类批量设置操作在代码中多次出现,可以封装一个通用辅助函数,进一步简化调用:

// 封装批量设置的通用方法
private void BatchSetElementValue(IEnumerable<(string uid, string value)> configs, string tag) {
    foreach (var (uid, value) in configs) {
        Utils_Obj.set_ElementValue(uid, tag, value);
    }
}

// 调用示例
var deltaAlt = altitude_value - targetAltitude;
var angleVal1345 = (deltaAlt * 1345 / 10000).ToString();
var angleVal1594 = (deltaAlt * 1594 / 10000).ToString();
var tofVal = TimeOfFlight.ToString();

BatchSetElementValue(new List<(string, string)> {
    (Utils_Obj.Sim.fa_11.XData.XOffsetAngle1.getUid(), angleVal1345),
    (Utils_Obj.Sim.fa_11.XData.XOffsetAngle2.getUid(), angleVal1594),
    // 其他配置项...
}, "[Simulator]");

这些方案既减少了代码重复,又通过预计算公共值提升了运行效率,同时保持了代码的可读性和扩展性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 04:31:12