我自己的自定义类中的扩展

Sha*_*des 2 swift

我正在阅读另一个SO问题,Swift do-try-catch语法.在他的回答中,rickster为OP的自定义类创建了一个扩展.Konrad77评论说这是"保持代码清洁的绝佳方式".我尊重他们的知识,这让我相信我在自己的代码中错过了一点.

是否还有其他好处(除了清洁度)或为我创建的课程创建扩展的原因?我可以直接将相同的功能放入类中.如果我是唯一一个使用该课程的人,或者其他人将访问它,答案是否会改变?

Col*_*aff 7

对于从头创建的类,扩展是一种强大的文档结构.您将类的核心放在初始定义中,然后添加扩展以提供其他功能.例如,添加对协议的遵守.它为包含的代码提供了局部性:

struct Foo {
  let age: Int
}

extension Foo: CustomStringConvertible {
  var description:String { return "age: \(age)" }
}
Run Code Online (Sandbox Code Playgroud)

我可以将protocol和computed属性放在struct声明中吗?当然,当你有超过一两个属性时,它开始变得混乱而且难以阅读.如果代码不干净和可读,则更容易创建错误.使用扩展是避免复杂性带来的困难的好方法.

  • 以这种方式使用扩展不仅仅是简单的清洁.编码的一部分是使代码易于理解并避免由于混淆而导致的错误.我们都知道有很多方法可以编写解决方案,许多最佳解决方案都是以清晰,简洁,易读的方式完成的.通过对相关代码进行分组,您可以增加代码的实用性,而不仅仅是使代码更清晰.它变得自我记录. (3认同)
  • 在某些时候,需要区分简单清洁和深层,有用,理想的结构.毕竟,我可以使用任何图灵完整语言编写解决方案.我们使用更高级别的语言,因为它们通常会产生更清晰,更易读,更易于使用的代码.良好的结构不仅仅是看起来不错,它是代码的一个特征. (3认同)
  • 这并没有回答这个问题,因为OP特别提到"除了清洁". (2认同)
  • 这是"清洁度"的所有扩展(双关语),它是一个包含所有代码的名称,指的是代码可读,结构化,易于调试和易于理解. (2认同)