我一直在Class内部和外部声明变量,如下所示。我对OOP的理解是限制它们的范围。但是,要在其他类/文件中使用它们,我将它们放在外面(例如“testLabel”)。主要是因为它“有效”而我对OOP不够熟悉。
var testlabel:UILabel!
public var earth = SKShapeNode(circleOfRadius: 15)
class GameScene: SKScene , SKPhysicsContactDelegate {
var startTime = NSTimeInterval()
var skView:SKView!
我的问题是:Swift / OOP中的最佳做法是为所有类提供变量吗?
我已经阅读了几个讨论,但仍然不清楚公开或全球声明变量的危险(与方便)。
感谢您的帮助。
答案 0 :(得分:3)
如果在类之外声明变量,它将变为全局变量。 如果您不在其他课程中使用变量,那么在课堂上声明变量是最佳做法。
如果我们宣布为全局变量,我不确定是否存在任何危险。
答案 1 :(得分:1)
声明全局变量的“危险”更像是“代码味道”或不良实践。它们并不危险,因为它们会导致代码崩溃,但它们很危险,因为它们会导致代码变得更加难以操作并且更难以维护,因为您的类没有整齐地封装,并且它们的一些功能还存在于其他功能中地方。
但有时候全球行为是必要的。在这种情况下,我认为你应该创建一个所有其他类都可以引用的类的共享实例或单例。然后,您至少将该行为封装在一个易于查找和控制的类中,而不是使用魔术浮动变量。 Apple在其代码中使用共享实例。
http://www.raywenderlich.com/86477/introducing-ios-design-patterns-in-swift-part-1