ios – 如何在Swift中正确使用类扩展?

ios – 如何在Swift中正确使用类扩展?,第1张

概述在 Swift中,我历史上使用扩展来扩展封闭类型并提供方便的,无逻辑的功能,如动画,数学扩展等.但是,由于扩展是硬依赖性遍布整个代码库,我总是在实现之前三次思考某事作为延伸. 最近,我已经看到Apple建议更大程度地使用扩展,例如将协议实现为单独的扩展. 也就是说,如果你有一个实现协议B的A类,你最终会得到这样的设计: class A { // Initializers, stored p 在 Swift中,我历史上使用扩展来扩展封闭类型并提供方便的,无逻辑的功能,如动画,数学扩展等.但是,由于扩展是硬依赖性遍布整个代码库,我总是在实现之前三次思考某事作为延伸.

最近,我已经看到Apple建议更大程度地使用扩展,例如将协议实现为单独的扩展.

也就是说,如果你有一个实现协议B的A类,你最终会得到这样的设计:

class A {    // Initializers,stored propertIEs etc.}extension A: B {    // Protocol implementation}

当你进入那个兔子洞时,我开始看到更多基于扩展的代码,例如:

fileprivate extension A {    // Private,calculated propertIEs}fileprivate extension A {    // Private functions}

我的一部分就像你在单独的扩展中实现协议时获得的构建块.它使得该类的独立部分非常独特.但是,只要继承此类,就必须更改此设计,因为无法覆盖扩展函数.

我认为第二种方法是……有趣.一旦它成功,那就是你不需要注释每个私有属性并将其作为私有属性,因为你可以为扩展指定.

但是,这种设计还会分割存储和非存储的属性,公共和私有函数,使类的“逻辑”更难遵循(我写的是写较小的类).这与子类化问题一起使我在延伸仙境的门廊上停了下来.

很想听听Swift社区如何看待扩展.你怎么看?有银d吗?

解决方法 当然,这只是我的意见,所以我要写的很容易.

我目前正在我的项目中使用扩展方法,原因如下:

>代码非常简洁:我的类永远不会超过150行,并且通过扩展分离使我的代码更具可读性并且由职责分隔

这通常是一个类的样子:

final class A {    // Here the public and private stored propertIEs}extension A {    // Here the public methods and public non-stored propertIEs}fileprivate extension A {    // here my private methods}

扩展可以不止一个,当然,这取决于你的课程做什么.这对于组织代码并从Xcode顶部栏中读取它非常有用

>它提醒我Swift是一种面向协议的编程语言,而不是OOP语言.协议和协议扩展没有任何功能.我更喜欢使用协议为我的classes / struct添加安全层.例如,我通常以这种方式编写模型:

protocol User {    var uID: String { get }    var name: String { get }}final class usermodel: User {    var uID: String    var name: String    init(uID: String,name: String) {        self.uID = uID        self.name = name    }}

通过这种方式,您仍然可以在usermodel类中编辑您的uID和名称值,但您不能在外部编辑,因为您只能处理User协议类型.

总结

以上是内存溢出为你收集整理的ios – 如何在Swift中正确使用类扩展?全部内容,希望文章能够帮你解决ios – 如何在Swift中正确使用类扩展?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1109620.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存