正确生成类属性getter / setter的生产实现

时间:2016-05-09 15:06:00

标签: swift this production-environment self

在Java,PHP,Swift等语言中,分别有this$thisself等关键字,它们是包含类的特定实例的反身指针。如果没有其他局部变量共享相同的标识符,Java和Swift都允许程序员完全省略该语句。我的问题是在生产中写这个的推荐方法是什么?例如,生产中的程序员在没有必要时省略self是否可以接受?

var name: String = ""

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

func doSomeMethod() {
    print(name)
}

或生产中的开发人员总是在访问实例属性时使用self子句,如

var name: String = ""

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

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

3 个答案:

答案 0 :(得分:2)

文档描述得非常好

  

自我属性

     

类型的每个实例都有一个名为self的隐式属性   完全等同于实例本身。你使用self   用于引用其自己实例中的当前实例的属性   方法

     

上面示例中的increment()方法(请参阅链接指南中的示例)可能已经编写   像这样:

func increment() {
  self.count += 1 
} 
     

实际上,您不需要经常在代码中编写self 。   如果你没有明确写出self,那么Swift   假设您指的是当前的属性或方法   每当您在a中使用已知属性或方法名称时的实例   方法。使用count(相反,使用self.count证明了这一假设   Counter的三个实例方法中的Counter)。 self是本节中提到的类

     

当一个参数名称出现时,会出现此规则的主要异常   instance方法与该实例的属性同名。在   在这种情况下,参数名称优先,它变为   必须以更合格的方式提及房产。你用   String str = "hi"; System.out.println(str+ "\uD83D\uDDDA"); 属性,用于区分参数名称和   财产名称。

来源:The Swift Language Guide: Methods

答案 1 :(得分:2)

我非常喜欢在生产代码中始终使用

它对发出的机器代码没有任何影响,并且让程序员更容易使事情变得毫无意义,而不是让事情变得更容易 您可能想要使用的其他工具。 (即代码搜索工具,lint类型工具等)

此外,避免愚蠢的拼写错误所节省的时间远远大于打字时节省的时间。

答案 2 :(得分:1)

访问实例属性时,当前需要proposal on the swift-evolution repository才能self。对于总是要求它,这是一个相当有说服力的论据。