> On 13 Sep 2019, at 20:52, Tim Mackinnon <[email protected]> wrote:
>
>
> I agree with Ben’s reaction below , however the point that ? ! could be
> repurposed for something if they weren’t special characters is a good one.
> Maybe there are other usages we are missing, and that’s the point I guess.
Exactly.
I think that it would be nice to think a bit.
I like the idea that I do not have to read the code to understand if a method
is a predicate.
odd?
even?
Stef
>
> Tim
>
> Sent from my iPhone
>
> On 13 Sep 2019, at 17:41, Ben Coman <[email protected]
> <mailto:[email protected]>> wrote:
>
>>
>>
>> On Wed, 11 Sep 2019 at 15:10, ducasse <[email protected]
>> <mailto:[email protected]>> wrote:
>>
>>
>> > On 11 Sep 2019, at 04:07, James Foster <[email protected]
>> > <mailto:[email protected]>> wrote:
>> >
>> > Would use of ? and ! in unary/keyword selectors be convention or somehow
>> > required? If simply convention, then we should start with renaming testing
>> > methods to be named is* or has*.
>> > flag1 := anInteger even. “not good"
>>
>> Agreed. That could "almost" be construed as converting a 3 to a 2 or 4.
>>
>>
>> > flag2 := anInteger isEven. “better"
>>
>> Agreed. It reads well.
>>
>>
>> > flag3 := anInteger even?. “how much better?”
>>
>> For me, this doesn't read as well as flag2, but even though there is some
>> redundancy, for me a combination reads well...
>> flag3a := anInteger isEven?
>> Perhaps if "?"==>Boolean was a strong convention then there could be a check
>> when the value is returned rather than when it is used (or would that
>> complicate other things?)
>>
>>
>> > flag4 := #(1 2 3) includes?: 2. “how much better?”
>>
>> My first impression is "yuck!", but then I think... "maybe" if there was a
>> definite benefit (i.e. optimization) from strong guarantees about the return
>> value being Boolean.
>>
>>
>>
>> I think that I would use ? mainly for unary message
>>
>> Now I’m sure that if you look carefully some people use
>>
>> include
>> for the action
>> includes
>> for the tests
>>
>> I took include as an example and this is super not intention revealing.
>>
>> >> lineUpBlockBrackets
>>
>> lineUpBlockBrackets?
>> Now I will rewrite them all as shouldLineUpBlockBrackets or
>> isLineUpBlockBrackets and to me for unary message ? makes it a lot better.
>>
>> btw, some alternatives...
>> doBlockBracketsLineUp - reads well but "do" is already a loaded word
>> areBlockBracketsLinedUp - reads well with the past-tense phrasing
>>
>> cheers -ben