【问题标题】:Is there a reason for creating an extension for a class you created/have access to? [duplicate]是否有理由为您创建/有权访问的类创建扩展? [复制]
【发布时间】:2019-08-29 19:21:57
【问题描述】:

可能是一个愚蠢的问题,但是, 除了您无权访问的类、结构、枚举和协议之外。您为已创建的类(结构、枚举和协议)创建扩展的重要原因是什么?

【问题讨论】:

  • 清晰度。组织。整洁。风格。协议扩展也有特殊的权力。
  • 谢谢@matt 我在想,但我想知道是否有一些我想念的超级棒的东西。哈哈
  • @XavierJamesShelton 好吧,如果不替换默认的按成员初始化程序,就无法在结构声明中定义初始化程序。如果您在扩展中定义自定义初始化程序,并保持主声明没有任何初始化程序,您可以保留默认的成员初始化程序,并且也有您的自定义初始化程序。这对于引入新的“便利初始化器”非常方便(尽管对于结构来说,它们没有被正式称为),它委托给成员明智的初始化器。这不是最好的设计,但它是当今语言的一个怪癖
  • 哦,这很酷谢谢@Alexander

标签: swift extension-methods


【解决方案1】:

维护一个协议协议分开的代码库更容易,您可以快速找到您要查找的内容,您甚至可以将它们分开到特定文件中以进一步分开。

想象一下搜索很多方法来找到特定的匹配规则,那将是不必要的努力。

从技术上讲,你可以在没有扩展的情况下在类上做所有事情,但你可以按照你想要的方式将它们分开。

【讨论】:

  • 非常感谢。这似乎是保持代码清洁的一种非常聪明的方法。我很困惑为什么文档就像为你自己的类创建一个扩展,我想但是为什么?!
【解决方案2】:

很多时候,您有需要遵守的协议,并且您不想将所有协议都列在类的顶部,因为它的组织性要差得多。扩展允许您轻松跟踪和分类您编写的任何委托方法,因此当出现问题时,您无需搜索代码即可轻松修复。

你当然可以只通过编译指示来组织你的代码,但是很多人觉得它看起来不太好,而且你失去了不必在类的顶部列出你要确认的所有协议的好处。

【讨论】:

  • :o 哇!这是一个很好的答案。非常感谢。
猜你喜欢
  • 2013-07-02
  • 1970-01-01
  • 1970-01-01
  • 2018-07-06
  • 2016-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-25
相关资源
最近更新 更多