on Mon Mar 28 2016, Erica Sadun <erica-AT-ericasadun.com> wrote:

>> On Mar 28, 2016, at 11:16 AM, Dave Abrahams via swift-evolution 
>> <[email protected]> wrote:
>> 
>> 
>> on Fri Mar 25 2016, Erica Sadun <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>
>>> I am looking for examples of method/function signatures that use multiple 
>>> Boolean flags, e.g.
>>> 
>>> func generateContact(withAddress: Bool, withEmail: Bool, withPhone: Bool) 
>>> -> Customer // not my code
>>> 
>>> If you have app code or library code around that you can check, I
>>> would greatly appreciate if you can share signatures with me or just
>>> generally comment on how often this pattern shows up in your daily
>>> life. I am specifically looking for: use of two or more separate
>>> Boolean parameters passed as flags.
>>> 
>>> I would also welcome examples of option sets that replaced Boolean
>>> flags with a note as to whether that option set type is used elsewhere
>>> in your app.
>>> 
>>> I am following up to an action item that Brent Royal-Gordon mentioned
>>> on-list a while back but I want real supporting motivating code
>>> evidence before I move forward with a draft proposal.
>>> 
>>> Feel free to email me off-list. Thank you,  -- Erica
>> 
>> It's not hard to grep through Apple's APIs for things like this using
>> the repository we put up for the API naming review.
>> 
>> HTH,
>
> I actually did this. I also pulled down a bunch of Github repos looking for 
> the pattern.
>
> Interestingly what I found was:
>
> * Few circumstances where multiple boolean flags were used, both in Apple 
> code and third party code
> * Two flags was the most common multiplicity. Three flags were rare. I did 
> not find any with four or more.
> * Code from what I judged as experts that used multiple booleans were
> primarily initializers, with a few instances from graphics code for
> things like stroke and fill.
> * Code in gists that showed many flag booleans in normal methods were
> almost always from what I'd rank as "beginner code"
>
> I'm not going to press forward with the language enhancement I had in
> mind because I don't see a compelling reality-based need for it after
> performing this check.

Thank you anyway for doing the due diligence.  That kind of research is
important and often overlooked.

Cheers,

-- 
Dave
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to