Swift变量声明位置与条件判断
Swift变量声明位置与条件判断

Swift变量声明位置与条件判断

思考问题

我在使用Swift判断语句时,思考的一个问题,那就是变量应该放在if语句内声明还说放在外面声明?

每个判断语句使用的变量不同,如果放在语句内/外,哪一种会增加编译成本?

// 变量A
let A: CFString 

// if 判断语句
if appStorage.enableThirdPartyLibraries {
	// 使用变量A在语句外声明
} else {
	// 变量B在if语句内声明
	let B: CFString 
}

实际上,变量作用域应尽量“最小化”:变量只在它被使用的地方声明,不要提前声明它如果后续用不到。

// if 判断语句
if appStorage.enableThirdPartyLibraries {
    // 变量 A 在 if 语句内声明
    let A: CFString 
} else {
    // 变量 B 在 if 语句内声明
    let B: CFString 
}

使用原则

1、最小作用域(Minimal Scope)

变量只在需要的地方声明,避免在全函数或条件外部提前定义。

好处:更节省内存(尤其是大对象、图像等),降低出错概率,阅读和维护成本更低。

2、分支独立,避免污染

如果变量只在某个 if 或 else 中用到,应该只写在那一分支中。

避免误用或误判(特别是逻辑分支变多时)。

3、延迟初始化(Lazy Init)

对于性能较重或复杂类型(如 CGImageSource、NSImage、Data),推荐延迟到真正需要时再创建。

避免「无用工作」浪费 CPU、内存和 IO。

总结

变量是否放在 if 内还是外,取决于是否在所有分支都需要它。如果只在某个分支中用到,就放在该分支中即可,不要提前定义浪费资源和空间。

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注