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

Swift代码重构:如何用内联条件优化指定参数逻辑?

Swift代码内联条件优化重构方案

先修正原代码的逻辑问题

原代码中toOutputs的条件selectedDevice == 0 || (1 != 0)存在明显问题:1 != 0是恒成立的布尔值,这会导致toOutputs永远返回空数组,完全忽略了selectedDevice的实际取值。推测这是笔误,合理的逻辑应该是当selectedDevice为0或等于1时返回空数组,仅当selectedDevice为非0非1的设备ID时返回对应唯一ID数组,我们基于这个合理逻辑进行重构。

重构优化步骤

  1. 提取重复判断变量:把重复出现的selectedDevice == 1提取为布尔变量isAllEndpointsMode,避免多次重复判断,提升代码可读性和维护性。
  2. 简化内联条件表达式:利用提取的变量,让mode和filter的逻辑更直观;同时修正toOutputs的逻辑,用更简洁的方式实现。

重构后的代码

func start(_ selectedDevice: Int32, resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) {
    do {
        print("Starting MIDI manager.")
        try midiManager.start()
        
        let inputTag = "InputConnection1"
        let isAllEndpointsMode = selectedDevice == 1
        // 修正后的toOutputs逻辑:仅当selectedDevice非0且非1时,返回对应设备ID数组
        let targetOutputs = selectedDevice == 0 || isAllEndpointsMode ? [] : [.uniqueID(selectedDevice)]
        
        try midiManager.addInputConnection(
            toOutputs: targetOutputs,
            tag: inputTag,
            mode: isAllEndpointsMode ? .allEndpoints : .definedEndpoints,
            filter: isAllEndpointsMode ? .owned() : .default()
        )
        resolve("Started!")
    } catch {
        reject("400", "Setup Error:", error)
    }
}

优化说明

  • 提取的isAllEndpointsMode变量让代码逻辑更清晰,后续如果需要调整判断条件,只需修改一处即可。
  • targetOutputs变量把原本复杂的内联逻辑抽离出来,单独命名后更易理解其作用。
  • 所有条件判断都基于同一变量,避免了逻辑不一致的风险,同时精简了代码结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 07:36:17