Re: Swift and parameter names
Re: Swift and parameter names
- Subject: Re: Swift and parameter names
- From: Jean-Daniel Dupas <email@hidden>
- Date: Wed, 01 Jul 2015 17:09:21 +0200
> Le 30 juin 2015 à 23:46, Quincey Morris <email@hidden> a écrit :
>
> On Jun 29, 2015, at 15:42 , Rick Mann <email@hidden> wrote:
>>
>> Here's an example (and this is what I frequently encounter) where requiring parameter names adds nothing but clutter:
>>
>> let config = WKWebViewConfiguration()
>> self.webView = WKWebView(frame: self.webViewContainer.frame, configuration: config);
>
> I’ve been thinking about this since yesterday, and while I don’t particularly agree that the parameter names are extraneous in *this* case, I can think of a couple of special cases:
>
> 1. If the function/method being called has extremely well-known parameters, then I think I’d prefer the function to have a form that omits the names. In particular, CGRect, CGPoint and CGSize:
>
>> let rect = CGRect (x: 0, y: 0, width: 10, height: 10) // vs:
>> let rect = CGRect (0, 0, 10, 10)
>
Only because you are used to CGRect. QuickDraw used to defined a rect using left, top, right, bottom values. Here you assume that your code reader is already familiar with the API.
> The point here is that the parameter semantics are known from the *name* of the function, not from the actual parameters. We have this convention already, in the default behavior where the first keyword to a regular function/method is omitted:
>
>> doSomethingWithRect (someRect)
>
>
> This is similar to the CGRect initializer case, in that we know from the name what the parameter is (because it tells us, in this case, not necessarily because we knew it in advance).
>
> 2. There’s common situation where a variable name very often *is* a parameter keyword. For example:
>
>> init (frame: CGRect, configuration: WKWebViewConfiguration) {
>> super.init (frame: frame, configuration: configuration)
>> }
>
> In this case, the name of the variable in the ‘super’ call *is* the same as the keyword, because that’s a syntactic default in Swift. Under these circumstances, I could see this being allowed:
>
>> init (frame: CGRect, configuration: WKWebViewConfiguration) {
>> super.init (frame, configuration)
>> }
>
> It may or may not be desirable to require that the keywords are all omitted or all retained, or that this would only work for parameter variables (which have a natural relationship to their keyword).
>
> What do you think? This wouldn’t eliminate all the cases you’ve set your sights on, but it would probably remove the most egregious ones. If there’s some consensus here, I’ll file radars.
>
>
>
> _______________________________________________
>
> Cocoa-dev mailing list (email@hidden)
>
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden