<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">Thank you! I realized one other potential flaw in the data-gathering: your search for "func foo(_ bar" will match both Objective-C methods and C functions. I'm not sure CF should really be contributing to the scores. Unfortunately the main way I can think of to differentiate them is by indentation, which seems a little sketchy.</div><div class=""><br class=""></div><div class="">Still, the conclusions I would draw from this are that the <i class="">vast</i> majority of methods fall into one of the three following categories:</div><div class=""><br class=""></div><div class="">- No arguments.</div><div class="">- Empty first argument label.</div><div class="">- First argument label that does not match the parameter name.</div><div class=""><br class=""></div><div class="">This doesn't mean we shouldn't change the convention—"_ completionHandler" is much easier to type than "completionHandler completionHandler", and it's still removing complexity—but it does mean (to me) that the new API naming guidelines <i class="">don't</i> make the "matching" case more important; they only make the "no label" case <i class="">less</i> important.</div><div class=""><br class=""></div><div class="">Jordan</div><div class=""><br class=""></div><br class=""><div><blockquote type="cite" class=""><div class="">On Mar 14, 2016, at 20:30 , Shawn Erickson <<a href="mailto:shawnce@gmail.com" class="">shawnce@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><br class=""><br class=""><div class="gmail_quote"><div dir="ltr" class="">On Mon, Mar 14, 2016 at 8:05 PM Jordan Rose <<a href="mailto:jordan_rose@apple.com" class="">jordan_rose@apple.com</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class=""><div class="">Ah, this doesn't distinguish</div><div class=""><br class=""></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px" class=""><div class="">func foo(bar baz: Int)</div></blockquote><div class=""><br class=""></div>from<div class=""><br class=""></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px" class=""><div class="">func foo(bar bar: Int)</div></blockquote><div class=""><br class=""></div><div class="">That's pretty important for this discussion.</div><div class=""><br class=""></div><div class="">(Thanks for actually doing this! I just let it drop last week.)</div></div><div style="word-wrap:break-word" class=""><div class=""><div class=""><div class=""><blockquote type="cite" class=""><div class=""></div></blockquote></div></div></div></div></blockquote><div class=""><span class=""><div class="">[shawnce:~/Downloads/swift-3-api-guidelines-review-swift-3]</div><div class="">[0:574]> grep -R "func [A-Za-z0-9]*(\([A-Za-z0-9]*\) \1:" Platforms/ | wc -l</div><div class=""> 274</div></span></div><div class=""><br class=""></div><div class=""><span class=""><span class=""><div class="">[shawnce:~/Downloads/swift-3-api-guidelines-review-swift-3]</div><div class="">[0:579]> grep -R "func [A-Za-z0-9]*(\([A-Za-z0-9]*\) \1:" Platforms/ | head -5</div><div class="">Platforms//iOS/AssetsLibrary/ALAssetRepresentation.swift: func cgImage(options options: [NSObject : AnyObject]! = [:]) -> Unmanaged<CGImage>!</div><div class="">Platforms//iOS/CloudKit/CKContainer.swift: func accountStatus(completionHandler completionHandler: (CKAccountStatus, NSError?) -> Void)</div><div class="">Platforms//iOS/CloudKit/CKContainer.swift: func fetchUserRecordID(completionHandler completionHandler: (CKRecordID?, NSError?) -> Void)</div><div class="">Platforms//iOS/CloudKit/CKContainer.swift: func discoverAllContactUserInfos(completionHandler completionHandler: ([CKDiscoveredUserInfo]?, NSError?) -> Void)</div><div class="">Platforms//iOS/CloudKit/CKDatabase.swift: func fetchAllRecordZones(completionHandler completionHandler: ([CKRecordZone]?, NSError?) -> Void)</div><div class=""><br class=""></div></span></span><br class=""></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class=""><div class=""><div class=""><div class=""><blockquote type="cite" class=""><div class="">On Mar 14, 2016, at 16:01 , Shawn Erickson via swift-evolution <<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>> wrote:</div><br class=""><div class=""><div dir="ltr" class=""><div class="">I could have easily screwed up my grep but doing spot checks on the resulting data sets I didn't spot an issue. I did make assumptions about how well formed the data set was.</div><div class=""><br class=""></div><div class=""><span class=""><div class="">[shawnce:~/Downloads/swift-3-api-guidelines-review-swift-3]</div><div class="">[0:554]> grep -R "func [A-Za-z0-9]*([A-Za-z0-9]* [A-Za-z0-9]*:" Platforms/ | wc -l</div><div class=""> 10587</div><div class=""><br class=""></div><div class="">[shawnce:~/Downloads/swift-3-api-guidelines-review-swift-3]</div><div class="">[0:555]> grep -R "func [A-Za-z0-9]*(_ [A-Za-z0-9]*:" Platforms/ | wc -l</div><div class=""> 21654</div><div class=""><br class=""></div><div class="">[shawnce:~/Downloads/swift-3-api-guidelines-review-swift-3]</div><div class="">[0:556]> grep -R "func [A-Za-z0-9]*([A-Za-z0-9]* _:" Platforms/ | wc -l</div><div class=""> 0</div><div class=""><br class=""></div><div class="">[shawnce:~/Downloads/swift-3-api-guidelines-review-swift-3]</div><div class="">[0:557]> grep -R "func [A-Za-z0-9]*([A-Za-z0-9]*:" Platforms/ | wc -l</div><div class=""> 14</div><div class=""><br class=""></div><div class="">[shawnce:~/Downloads/swift-3-api-guidelines-review-swift-3]</div><div class="">[0:558]> grep -R "func [A-Za-z0-9]*()" Platforms/ | wc -l</div><div class=""> 7190</div><div class=""><br class=""></div></span></div><div class="">----</div><div class=""><br class=""></div><div class=""><span class=""><div class="">[shawnce:~/Downloads/swift-3-api-guidelines-review-swift-3]</div><div class="">[0:559]> grep -R "func [A-Za-z0-9]*([A-Za-z0-9]* [A-Za-z0-9]*:" SampleCode/ | wc -l</div><div class=""> 12</div><div class=""><br class=""></div><div class="">[shawnce:~/Downloads/swift-3-api-guidelines-review-swift-3]</div><div class="">[0:560]> grep -R "func [A-Za-z0-9]*(_ [A-Za-z0-9]*:" SampleCode/ | wc -l</div><div class=""> 0</div><div class=""><br class=""></div><div class="">[shawnce:~/Downloads/swift-3-api-guidelines-review-swift-3]</div><div class="">[0:561]> grep -R "func [A-Za-z0-9]*([A-Za-z0-9]* _:" SampleCode/ | wc -l</div><div class=""> 0</div><div class=""><br class=""></div><div class="">[shawnce:~/Downloads/swift-3-api-guidelines-review-swift-3]</div><div class="">[0:562]> grep -R "func [A-Za-z0-9]*([A-Za-z0-9]*:" SampleCode/ | wc -l</div><div class=""> 512</div><div class=""><br class=""></div><div class="">[shawnce:~/Downloads/swift-3-api-guidelines-review-swift-3]</div><div class="">[0:563]> grep -R "func [A-Za-z0-9]*()" SampleCode/ | wc -l</div><div class=""> 221</div></span><br class=""></div></div><br class=""><div class="gmail_quote"><div dir="ltr" class="">On Mon, Mar 14, 2016 at 3:28 PM Dave Abrahams via swift-evolution <<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br class="">
on Sun Mar 13 2016, Shawn Erickson <<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>> wrote:<br class="">
<br class="">
> On Fri, Mar 11, 2016 at 1:30 PM Dave Abrahams via swift-evolution <<br class="">
> <a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>> wrote:<br class="">
><br class="">
>><br class="">
>> Anyone who wants to measure is free to do so: simple regexps and wc<br class="">
>> generally work for this purpose.<br class="">
>><br class="">
>><br class="">
>> <a href="https://github.com/apple/swift-3-api-guidelines-review/tree/swift-3/Platforms" rel="noreferrer" target="_blank" class="">https://github.com/apple/swift-3-api-guidelines-review/tree/swift-3/Platforms</a><br class="">
>><br class="">
><br class="">
> Not sure if anyone actually got around to this so doing a basic set of<br class="">
> regex (includes class functions and overrides)...<br class="">
><br class="">
> func foo(bar baz:Baz... ---> 10544<br class="">
> func foo(baz:Baz... ---> 526<br class="">
> func foo(_:Baz... ---> 92<br class="">
> func foo() ---> 7392<br class="">
<br class="">
Are you certain? Last we checked it was about 50/50 between having and<br class="">
not-having a distinct argument label.<br class="">
<br class="">
--<br class="">
-Dave<br class="">
<br class="">
_______________________________________________<br class="">
swift-evolution mailing list<br class="">
<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a><br class="">
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class="">
</blockquote></div>
_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a><br class=""><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class=""></div></blockquote></div><br class=""></div></div></div></blockquote></div></div>
</div></blockquote></div><br class=""></body></html>