Request: Multiple Bool signatures


(Erica Sadun) #1

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


(Dave Abrahams) #2

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,

···

on Fri Mar 25 2016, Erica Sadun <swift-evolution@swift.org> 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

--
Dave


(Rudolf Adamkovič) #3

FYI, looking at my code, the most common use-case is:

func setSomething(something: Bool, animated: Bool)

R+

···

Sent from my iPhone

On 25 Mar 2016, at 23:33, Erica Sadun via swift-evolution <swift-evolution@swift.org> 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

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution


(Erica Sadun) #4

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.

-- E

···

On Mar 28, 2016, at 11:16 AM, Dave Abrahams via swift-evolution <swift-evolution@swift.org> wrote:

on Fri Mar 25 2016, Erica Sadun <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> 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,


(Dave Abrahams) #5

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

Cheers,

···

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 <swift-evolution@swift.org> wrote:

on Fri Mar 25 2016, Erica Sadun <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> 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.

--
Dave