Swift。使所有 类 成为最终结果?

Swift. Make all classes final?

我的问题是关于使用 final 关键字 im Swift 代码。我知道 final 可以帮助编译器更快地编译代码,因为它是动态调度的。所以,如果我明确知道我不会继承我的某些 类,我是否应该将它们全部设为 final?

如果您是 110%,您可以这样做,您不会尝试子类化您的任何 'final' 类,因为如果您这样做,您的项目将无法编译。

下面的文章提供了一些重要信息,应该可以帮助您做出决定。

http://blog.human-friendly.com/the-importance-of-being-final

iOS Stanford course教授了这种保护方法。

方法是定义所有 API private。它增加了封装。稍后,如果您需要放弃一些东西,请删除隐私。

因为反过来做是不好的,即设计一些东西 public 然后再将其更改为私有。

同样在这里,我认为制作一个 class final 然后再决定它不应该是最终的比制作一个 class 非最终的更好,允许多个 classes 将其子class,然后由于某些设计决定而尝试将其还原为 final

如果您的应用程序或框架使用继承协议,那么您可以将 class 类型定义为最终类型。

如果您更喜欢使用继承而不是协议,并且您的应用程序或框架已通过单元测试进行测试,那么当您的 class 类型用于依赖对象时,请不要将它们定义为 final,因为它们会不能被嘲笑。