如何简化重复代码并提升运行效率?附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
相关产品推荐
相关产品推荐

