2016-03-28 56 views
1

我正在阅读另一个SO问题Swift do-try-catch syntax。在他的回答中,rickerster为OP的自定义类创建了扩展。 Konrad77评论说这是“保持代码清洁的真正好方法”。我尊重他们的知识,这导致我相信我在我自己的代码中某处丢失了一点。我自己的自定义类中的扩展

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

+0

“除了清洁度以外还有其他任何好处或者是为我创建的课程创建扩展的原因吗?我可以直接将相同的功能放入课程中。”定义好处。我投票结束这个问题主要是基于意见,因为答案只能基于偏好,而不是事实。扩展只是编写类功能的另一种方式。他们如何使用和创建取决于原始程序员。 – JAL

+0

@JAL我尊重密切投票。他们实质上是回答我的问题。我以为我错过了这个过程的其他细微差别。 – Shades

+0

我不认为这个问题是严格意见的。是的,答案将包含意见,但他们也有可能澄清扩展可以推广的良好实践。 – ColGraff

回答

5

在您从头开始创建的类的情况下,扩展是通过结构的强大类型的文档。您将类的核心放在初始定义中,然后添加扩展以提供附加功能。例如,添加遵守协议。它提供了所包含代码的位置:

struct Foo { 
    let age: Int 
} 

extension Foo: CustomStringConvertible { 
    var description:String { return "age: \(age)" } 
} 

我可以将协议和计算属性放在struct声明中吗?绝对,但是当你有超过一个或两个属性,它开始变得杂乱,难以阅读。如果代码不干净且不可读,那么创建错误会更容易。使用扩展程序是避免复杂性带来困难的好方法。

+2

这并不回答这个问题,因为OP特别提到“除了清洁”。 –

+3

以这种方式使用扩展程序不仅仅是简单的清洁。编码的一部分是使代码易于理解并避免由于混淆而导致的错误。我们都知道有很多方法来编写解决方案,许多最好的解决方案都是以清晰,简洁,可读的方式进行编写的。通过对相关代码进行分组,您可以提高代码的实用性,而不仅仅是使其更清洁。它变成自我记录。 – ColGraff

+2

这是所有“清洁”的扩展(双关语并非意图),它是一个包含可读,结构化,易于调试和易于理解的代码的全称。 –