我们应该在方法的第一个参数中添加一个外部参数名称吗?为什么?
Should we add an external parameter name to the first parameter of methods? Why?
注意:我这里只说Swift2。
我见过两种方法命名约定:
func animateWithDuration(duration: NSTimeInterval, animation: () -> Void)
和
func animate(withDuration duration: NSTimeInterval, animation: () -> Void)
我听说其中一个更 "swifty"。但我不记得是哪个。但是为什么人们会关心这个呢?这两个约定在调用时看起来几乎一样:
animateWithDuration(10) { ... }
经文
animate(withDuration: 10) { ... }
当您尝试大声朗读方法时,完全一样的话:
animate with duration 10
那么哪个更快,为什么?
讨论编码风格有点多余,有很多支持或反对的论据。有点重要的是 Swift 3 个 API 将使用第二种样式,因此建议将其用于 Swift 代码。
有说法认为第二种风格更符合多种说法,例如
animate(withDuration: 10, andEffect: .Blend)
另一个论点是它使关键字参数一致,例如init
:
let a = Animation(withDuration: 10, andEffect: .Blend)
毕竟,()
调用语法首先不能很好地处理句子样式的方法调用。 Smalltalk 或 ObjC 在这方面要好得多(IMO)。
前者语法为Swift2的preferred/default语法,后者为Swift3的preferred/default语法。
在 WWDC 2016 的视频 Swift API Design Guidelines 中,他们描述了他们对 Cocoa API 中这种旧语法的印象:
And so, when you bring all of these APIs that were written for Objective-C into Swift unmodified, they seemed a little bit out of character. They feel a bit not-Swifty.
因此,根据 Apple 自己的估计,新语法更 Swifty。
话虽如此,如果您将自己局限于考虑 Swift 2.x,您可以很容易地为保持一致性而坚持使用传统语法。或者(在我看来更引人注目),您可以开始采用新的语法,您可以自然地这样做,以简化 Swift 3 迁移路径。
但我认为它不像"always include name of parameter in the method name"或"not"那么简单。在 Swift 3 中,我们会定义一个方法,其第一个参数没有外部参数名称(就像在 Swift 2 中,在某些情况下,我们会为第一个参数提供外部名称).最好让概述的原则 in that video (or as outlined on the swift.org site) 支配您的方法命名实践。
注意:我这里只说Swift2。
我见过两种方法命名约定:
func animateWithDuration(duration: NSTimeInterval, animation: () -> Void)
和
func animate(withDuration duration: NSTimeInterval, animation: () -> Void)
我听说其中一个更 "swifty"。但我不记得是哪个。但是为什么人们会关心这个呢?这两个约定在调用时看起来几乎一样:
animateWithDuration(10) { ... }
经文
animate(withDuration: 10) { ... }
当您尝试大声朗读方法时,完全一样的话:
animate with duration 10
那么哪个更快,为什么?
讨论编码风格有点多余,有很多支持或反对的论据。有点重要的是 Swift 3 个 API 将使用第二种样式,因此建议将其用于 Swift 代码。
有说法认为第二种风格更符合多种说法,例如
animate(withDuration: 10, andEffect: .Blend)
另一个论点是它使关键字参数一致,例如init
:
let a = Animation(withDuration: 10, andEffect: .Blend)
毕竟,()
调用语法首先不能很好地处理句子样式的方法调用。 Smalltalk 或 ObjC 在这方面要好得多(IMO)。
前者语法为Swift2的preferred/default语法,后者为Swift3的preferred/default语法。
在 WWDC 2016 的视频 Swift API Design Guidelines 中,他们描述了他们对 Cocoa API 中这种旧语法的印象:
And so, when you bring all of these APIs that were written for Objective-C into Swift unmodified, they seemed a little bit out of character. They feel a bit not-Swifty.
因此,根据 Apple 自己的估计,新语法更 Swifty。
话虽如此,如果您将自己局限于考虑 Swift 2.x,您可以很容易地为保持一致性而坚持使用传统语法。或者(在我看来更引人注目),您可以开始采用新的语法,您可以自然地这样做,以简化 Swift 3 迁移路径。
但我认为它不像"always include name of parameter in the method name"或"not"那么简单。在 Swift 3 中,我们会定义一个方法,其第一个参数没有外部参数名称(就像在 Swift 2 中,在某些情况下,我们会为第一个参数提供外部名称).最好让概述的原则 in that video (or as outlined on the swift.org site) 支配您的方法命名实践。