這些方法中的哪一個遵循Swift思想?Swift方法中的第一個參數標籤
func addChapter(_ chapter: Chapter)
func add(chapter chapter: Chapter)
func add(_ chapter: Chapter)
這些方法中的哪一個遵循Swift思想?Swift方法中的第一個參數標籤
func addChapter(_ chapter: Chapter)
func add(chapter chapter: Chapter)
func add(_ chapter: Chapter)
TLDR:
根據chapter
信息是否是重要的其他方法/含義區別,你應該使用第一或第三個選項。不是第二種選擇。
包含避免使用名稱的人閱讀代碼時出現歧義的所有單詞。
...,如果第一個參數形成的語法短語的部分,省略它的標籤,附加任何前述字基本名稱,例如
x.addSubview(y)
這也不是那麼容易不知道的類來決定。
讓我們考慮這是一類:
class Book {
var chapters: [Chapter]
var pages: [Page]
var metadata: [MetaData]
}
如果你看看Swift Evolution 0005有關辦法的OBJ-C方法是進口的,你可以學習的首選方式導入方法[UIView addGestureRecognizer:]
是addGestureRecognizer(_:UIGestureRecognizer)
。
注的理由:
如果我們放棄GestureRecognizer,只留下加,我們結束了,在概念上修改gestureRecognizers財產,但使用過於通用名稱這樣做的方法。
這就是爲什麼有一個規則
切勿從一個相匹配的封閉類的屬性方法的基本名稱修剪後綴:
你的第一個選項是那麼解決方案正確
在另一方面,如果類具有以下形式:
class Chapters {
private var chapters: [Chapter]
}
(例如陣列狀容器)
然後add(_:)
是正確的解決方案。
不應使用第二個選項add(chapter:)
。
我認爲這取決於形勢。
例如,您有User結構。
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
而且
User.addFollower(for: currentUserId, followerId) // Like sentense: User add follower for current user Id
希望它可以幫助
從API Design guidelines,第一個似乎是正確的:
// 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)
注意:改變了蘇丹的評論後的答案,請參考他的回答。
個人而言,我會去與
func add(chapter: Chapter)
該解決方案似乎是最清楚的給我。
我認爲最後一個遵循Swift 3 API設計指南 – Sweeper