Search code examples
swiftthisproduction-environmentself

Proper production implementation of class property getter/setter


In languages like Java, PHP, Swift, there are keywords like this, $this, and self, respectively, which are reflexive pointers to a particular instance of the containing class. Both Java and Swift allow the programmer to omit this statement entirely if no other local variables share the same identifier. My question is what is the recommended way to write this in production? For example, is it acceptable for a programmer in production to omit self when it is not necessary?

var name: String = ""

init(name: String) {
    self.name = name
}

func doSomeMethod() {
    print(name)
}

or should a developer in production always use the self clause when accessing instance properties in general like

var name: String = ""

init(name: String) {
    self.name = name
}

func doSomeMethod() {
    print(self.name)
}

Solution

  • There's currently a proposal on the swift-evolution repository to require self when accessing instance properties. It makes a fairly compelling argument for always requiring it.