[swift-evolution] [Pitch] Make the first parameter in a function declaration follow the same rules as the others

Dave Abrahams dabrahams at apple.com
Tue Mar 15 18:49:05 CDT 2016


on Tue Mar 15 2016, Jordan Rose <swift-evolution at swift.org> wrote:

> 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.

In this context, it's not.  These are automatically extracted and
formatted APIs.

> Still, the conclusions I would draw from this are that the vast
> majority of methods fall into one of the three following categories:
>
> - No arguments.
> - Empty first argument label.
> - First argument label that does not match the parameter name.
>
> 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 don't make the
> "matching" case more important; they only make the "no label" case
> less important.
>
> Jordan
>
>> On Mar 14, 2016, at 20:30 , Shawn Erickson <shawnce at gmail.com> wrote:
>> 
>> 
>> 
>> On Mon, Mar 14, 2016 at 8:05 PM Jordan Rose
>> <jordan_rose at apple.com
>> <mailto:jordan_rose at apple.com>> wrote:
>> Ah, this doesn't distinguish
>> 
>> func foo(bar baz: Int)
>> 
>> from
>> 
>> func foo(bar bar: Int)
>> 
>> That's pretty important for this discussion.
>> 
>> (Thanks for actually doing this! I just let it drop last week.)
>> 
>> [shawnce:~/Downloads/swift-3-api-guidelines-review-swift-3]
>> [0:574]> grep -R "func [A-Za-z0-9]*(\([A-Za-z0-9]*\) \1:" Platforms/ | wc -l
>>      274
>> 
>> [shawnce:~/Downloads/swift-3-api-guidelines-review-swift-3]
>> [0:579]> grep -R "func [A-Za-z0-9]*(\([A-Za-z0-9]*\) \1:" Platforms/ | head -5
>> Platforms//iOS/AssetsLibrary/ALAssetRepresentation.swift: func
>> cgImage(options options: [NSObject : AnyObject]! = [:]) ->
>> Unmanaged<CGImage>!
>> Platforms//iOS/CloudKit/CKContainer.swift: func
>> accountStatus(completionHandler completionHandler: (CKAccountStatus,
>> NSError?) -> Void)
>> Platforms//iOS/CloudKit/CKContainer.swift: func
>> fetchUserRecordID(completionHandler completionHandler: (CKRecordID?,
>> NSError?) -> Void)
>> Platforms//iOS/CloudKit/CKContainer.swift: func
>> discoverAllContactUserInfos(completionHandler completionHandler:
>> ([CKDiscoveredUserInfo]?, NSError?) -> Void)
>> Platforms//iOS/CloudKit/CKDatabase.swift: func
>> fetchAllRecordZones(completionHandler completionHandler:
>> ([CKRecordZone]?, NSError?) -> Void)
>> 
>> 
>>> On Mar 14, 2016, at 16:01 , Shawn Erickson via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>>> 
>>> 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.
>>> 
>>> [shawnce:~/Downloads/swift-3-api-guidelines-review-swift-3]
>>> [0:554]> grep -R "func [A-Za-z0-9]*([A-Za-z0-9]* [A-Za-z0-9]*:" Platforms/ | wc -l
>>>    10587
>>> 
>>> [shawnce:~/Downloads/swift-3-api-guidelines-review-swift-3]
>>> [0:555]> grep -R "func [A-Za-z0-9]*(_ [A-Za-z0-9]*:" Platforms/ | wc -l
>>>    21654
>>> 
>>> [shawnce:~/Downloads/swift-3-api-guidelines-review-swift-3]
>>> [0:556]> grep -R "func [A-Za-z0-9]*([A-Za-z0-9]* _:" Platforms/ | wc -l
>>>        0
>>> 
>>> [shawnce:~/Downloads/swift-3-api-guidelines-review-swift-3]
>>> [0:557]> grep -R "func [A-Za-z0-9]*([A-Za-z0-9]*:" Platforms/ | wc -l
>>>       14
>>> 
>>> [shawnce:~/Downloads/swift-3-api-guidelines-review-swift-3]
>>> [0:558]> grep -R "func [A-Za-z0-9]*()" Platforms/ | wc -l
>>>     7190
>>> 
>>> ----
>>> 
>>> [shawnce:~/Downloads/swift-3-api-guidelines-review-swift-3]
>>> [0:559]> grep -R "func [A-Za-z0-9]*([A-Za-z0-9]* [A-Za-z0-9]*:" SampleCode/ | wc -l
>>>       12
>>> 
>>> [shawnce:~/Downloads/swift-3-api-guidelines-review-swift-3]
>>> [0:560]> grep -R "func [A-Za-z0-9]*(_ [A-Za-z0-9]*:" SampleCode/ | wc -l
>>>        0
>>> 
>>> [shawnce:~/Downloads/swift-3-api-guidelines-review-swift-3]
>>> [0:561]> grep -R "func [A-Za-z0-9]*([A-Za-z0-9]* _:" SampleCode/ | wc -l
>>>        0
>>> 
>>> [shawnce:~/Downloads/swift-3-api-guidelines-review-swift-3]
>>> [0:562]> grep -R "func [A-Za-z0-9]*([A-Za-z0-9]*:" SampleCode/ | wc -l
>>>      512
>>> 
>>> [shawnce:~/Downloads/swift-3-api-guidelines-review-swift-3]
>>> [0:563]> grep -R "func [A-Za-z0-9]*()" SampleCode/ | wc -l
>>>      221
>>> 
>>> 
>>> On Mon, Mar 14, 2016 at 3:28 PM Dave Abrahams via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>>> 
>>> on Sun Mar 13 2016, Shawn Erickson <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>>> 
>>> > On Fri, Mar 11, 2016 at 1:30 PM Dave Abrahams via swift-evolution <
>>> > swift-evolution at swift.org
>>> > <mailto:swift-evolution at swift.org>>
>>> > wrote:
>>> >
>>> >>
>>> >> Anyone who wants to measure is free to do so: simple regexps and wc
>>> >> generally work for this purpose.
>>> >>
>>> >>
>>> >> https://github.com/apple/swift-3-api-guidelines-review/tree/swift-3/Platforms
>>> >> <https://github.com/apple/swift-3-api-guidelines-review/tree/swift-3/Platforms>
>>> >>
>>> >
>>> > Not sure if anyone actually got around to this so doing a basic set of
>>> > regex (includes class functions and overrides)...
>>> >
>>> > func foo(bar baz:Baz... ---> 10544
>>> > func foo(baz:Baz... ---> 526
>>> > func foo(_:Baz... ---> 92
>>> > func foo() ---> 7392
>>> 
>>> Are you certain?  Last we checked it was about 50/50 between having and
>>> not-having a distinct argument label.
>>> 
>>> --
>>> -Dave
>>> 
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution at swift.org
>>> <mailto:swift-evolution at swift.org>
>>> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution at swift.org
>>> <mailto:swift-evolution at swift.org>
>>> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
>> 
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

-- 
-Dave



More information about the swift-evolution mailing list