> DispatchQueue.async(execute:) and DispatchQueue.sync(execute:)
> --------------------------------------------------------------
> The lack of verb in the base name bothers me. The API Design Guidelines say
> “methods with side-effects should read as imperative verb phrases”. You could
> argue that the argument label “execute” serves as the verb. However, .async
> and .sync are most commonly used with trailing closures where the argument
> label is not present.
>
> This issue was brought up during the review, but I did not see it being
> addressed. Why not name the methods something like .executeAsync(_:) and
> .executeSync(_:)?
That feels a little redundant to me. It's worth remembering that the API
Guidelines are a means of creating clear APIs, not an end in themselves. It's
okay to deviate a little if you get a better result.
However, I could see us borrowing (and slightly modifying) terminology from
Core Data:
queue.perform { … }
queue.performAndWait { … }
Compared to the status quo, this is clearer, a better fit for the guidelines,
and better at penalizing the disfavored API.
> DispatchQueue.after(when:execute:)
> ----------------------------------
> This one simply doesn’t read grammatically. For example, `queue.after(when:
> .now) { … }` becomes “queue, after when now …”. Since dispatch_after is
> semantically just an extended version of dispatch_async (I think), we can
> name this .executeAsync(after:_:).
Yeah, I gave a talk about the renaming on Saturday and somebody noted that
`when` reads poorly here. Fortunately, `queue.perform(after: .now() + 0.5)`
reads pretty well too. :^)
--
Brent Royal-Gordon
Architechies
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution