Hello!

I was working on a patch recently where I wanted to give an Objective-C 
variable a type of “id that conforms to protocol Foo.”

Should this be spelled like this:

id <Foo> myVariable

Or like this:

id<Foo> myVariable

I don’t see anything about this in the WebKit style guide 
<https://webkit.org/code-style-guidelines/>.

The former appears in WebCore, WebKit, and WebKitLegacy 1035 times, whereas the 
latter appears only 281 times. On the other hand, Apple’s documentation 
<https://developer.apple.com/documentation/metal/1433401-mtlcreatesystemdefaultdevice?language=objc>
 seems to prefer the latter.

Another consideration - This question is only about Objective-C protocols, not 
Objective-C generics. We already have a longstanding practice of spelling 
generics without the space, e.g. NSArray<NSString *> *. So, we could either 
intentionally choose for protocols to look visually similar to generics, or 
alternatively we could intentionally choose for protocols to look visually 
distinct to generics. Consider seeing something like Foo<Bar <Baz> *> *. Would 
the inconsistent spacing annoying you? Or would the spacing help you understand 
that Baz is a protocol but Bar is supplied as a generic type? Maybe the * 
characters already make that clear?

What should the style guide say here?

Thanks,
Myles
_______________________________________________
webkit-dev mailing list
webkit-dev@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-dev

Reply via email to