[swift-users] Clarification about the Swift API Design Guide - Initializer and factory methods calls
Gaétan Zanella
gaetan.zanella at fabernovel.com
Mon Jan 8 04:25:18 CST 2018
Swift API Design Guide <https://swift.org/documentation/api-design-guidelines> says :
> The first argument to initializer and factory methods calls should not form a phrase starting with the base name
Specially, it advises us against writing things like :
> let foreground = Color(havingRGBValuesRed: 32, green: 64, andBlue: 128)
> let newPart = factory.makeWidget(havingGearCount: 42, andSpindleCount: 14)
> let ref = Link(to: destination)
But in UIKit, the Swift Standard Library or in Foundation, we find code like :
struct Array<T> {
// ...
init(repeating repeatedValue: Array.Element, count: Int)
}
struct Data {
// ...
init(referencing reference: NSData)
}
class UIImage {
// …
init?(named name: String, in bundle: Bundle?, compatibleWith traitCollection: UITraitCollection?)
}
I understand that some UIKit methods inherit their ObjC declarations like imageNamed:inBundle:compatibleWithTraitCollection: <https://developer.apple.com/documentation/uikit/uiimage/1624154-imagenamed?language=objc>.
But what about Foundation and the Swift Standard Library ?
I agree that the initializers respect the Swift fundamentals : clean, short, readable, and consistent.
But the guide seems to be clear about it : we should not write such things.
Could someone shed some light on this point for me ? The subtlety about it.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20180108/5baeef13/attachment.html>
More information about the swift-users
mailing list