SE-0088 was accepted with revisions a month ago. However, some of the APIs just 
don’t feel right to me. I’ve only used DispatchQueue and DispatchSource so far, 
so I will only comment on those.

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(_:)?

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:_:).

DispatchSource subclass names
-----------------------------
Why is it DispatchSourceMemoryPressure instead of MemoryPressureDispatchSource? 
I don’t think I’ve ever seen subclass names where the superclass part is at the 
beginning of the name.

DispatchSource factory methods
------------------------------
e.g. DispatchSource.read(fileDescriptor:queue:). The API Design Guidelines 
mandate that factory methods begin with the prefix “make”. Indeed, 
DispatchSource.read might mislead people to think that a read will be performed 
by this method. A better name would be .makeReadSource(fileDescriptor:queue:).

And why are these factory methods on DispatchSource instead of initializers on 
the subclasses? ReadDispatchSource.init(fileDescriptor:queue:) would be way 
clearer.
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to