我正在通过代码限制在可读性/可用性和性能改进之间寻求可行的折衷方案。
根据this问题和链接的Apple document,看来尽可能频繁地使用代码限制非常重要。
另一方面,我从未见过实现所有代码限制的示例,并且我绝不会尝试这样的代码:
final internal class TestClass {
final private var result: String = "Result"
...
final internal func TestMethod(result: String) -> String {
...
}
}
那么,是否存在一个普遍接受且“可行”的折衷方案?
编辑
换句话说,如果final
和private
之类的代码限制所产生的性能提升如所附文章中所述,那么为什么我们很少看到它呢?为何它不是默认行为?
答案 0 :(得分:1)
链接的答案错误陈述了链接的博客文章。如果您正在使用“整体模块优化”(应该始终在“发布”模式下使用),出于性能原因,通常不需要主动添加final
或private
。编译器将确定何时可以插入它们。您应该使用final
和private
向其他程序员(和您自己)而不是优化程序表达您的意图。
但是,如果启用了“整体模块优化”,则将同时编译所有模块。这样一来,编译器就可以对整个模块进行推断,并在没有可见替代的情况下推断内部的final声明。