Swift方法中的第一个参数标签
以下哪一种方法遵循Swift思想Swift方法中的第一个参数标签,swift,signature,method-signature,Swift,Signature,Method Signature,以下哪一种方法遵循Swift思想 func addChapter(uu chapter:chapter) func添加(章节:章节) func添加(uu章:章) 我认为这取决于具体情况 例如,您有用户结构 struct User { static func add(with userId: String) { // ... } static func addFollower(for userId: String, _ followerId: Strin
func addChapter(uu chapter:chapter)
func添加(章节:章节)
func添加(uu章:章)
- 我认为这取决于具体情况
例如,您有用户结构
struct User {
static func add(with userId: String) {
// ...
}
static func addFollower(for userId: String, _ followerId: String) {
// ...
}
}
您将在何时使用它:
User.add(with: newUserId) // Like sentense: User add with new user Id
及
希望对您有所帮助第一条似乎是正确的:
// Clear
func addChapter(_ chapter: Chapter)
variable.addChapter(x)
// Not clear
func add(chapter chapter: Chapter)
variable.add(chapter: x)
// Not clear
func add(_ chapter: Chapter)
variable.add(x)
注意:在Sulthan的评论后更改了答案,请参考他的答案。TLDR:
根据章节
信息与其他方法/含义的区别是否重要,您应该使用第一个或第三个选项。不是第二种选择
包括所有必要的单词,以避免阅读代码时出现歧义
…,如果第一个参数构成语法短语的一部分,则省略其标签,在基本名称后面附加任何前面的单词,例如x.addSubview(y)
(来自)
在不了解班级的情况下,这是很难决定的 我们认为这是一个类:
class Book {
var chapters: [Chapter]
var pages: [Page]
var metadata: [MetaData]
}
如果您了解Obj-C方法的导入方式,您可以了解到导入方法的首选方式[UIView AddgestureRecognitizer::
是AddgestureRecognitizer(uU2;:UIgestureRecognitizer)
请注意理由:
如果我们要删除GestureRecognizer,只留下add,那么我们最终会得到一个方法,该方法在概念上修改gestureRecognizers属性,但使用了一个过于通用的名称
这就是为什么有一条规则
切勿从与封闭类的属性匹配的方法的基名称中删除后缀:
您的第一个选择就是正确的解决方案
另一方面,如果您的类具有以下形式:
class Chapters {
private var chapters: [Chapter]
}
(例如,阵列状容器)
那么add(:)
就是正确的解决方案
第二个选项
add(chapter:)
永远不应该使用。我个人同意
func add(chapter: Chapter)
这个解决方案对我来说似乎是最清晰的。我认为最后一个方案遵循Swift 3 API设计指南。第二个方案与您引用的API设计指南不符。我认为您指的是“省略不必要的词”,但它取决于变量类型本身:示例中的“元素”是一个非常通用的东西,因此,类型是在变量名本身中指定的-示例提供了“cancelButton”;在回答的情况下,这一章不是泛型的,因此变量名将不是特定的,比如“first”、“second”等等:在这种情况下,我更喜欢在方法定义中提供上下文否则,如果第一个参数构成语法短语的一部分,请省略其标签,在基本名称后面附加任何前面的单词“哦,太好了!我看了命名约定,而不是参数标签。谢谢!
func add(chapter: Chapter)