Sent from my iPhone

> On Apr 28, 2017, at 1:00 PM, JF Bastien <[email protected]> wrote:
> 
> 
>> On Apr 28, 2017, at 12:12, Maciej Stachowiak <[email protected]> wrote:
>> 
>> 
>> Here's some comments in the other direction:
>> 
>> - If there are times we recommend x != 0 instead of !x, it should maybe be 
>> based on whether the condition is better expressed as "not zero" or "false". 
>> In the numTestsForEqualityComparison, that's clearly a "not zero" check 
>> given the naming of the variable. This could be addressed by removing 
>> zero/non-zero from the list with true/false and null/non-null instead of 
>> making a carve-out based on type.
>> 
>> - Allowing both forms for zero/non-zero comparisons would be unfortunate. We 
>> have style guidelines to avoid tiny inconsistencies like this. So if the 
>> guideline changes, it should be to *require* == 0 or != 0 for numeric 
>> comparisons to 0, not merely allow it. Proliferating both styles would be 
>> sad.
>> 
>> - If we adopted the new rule, it would be slightly sad that a bunch of old 
>> code doesn't follow it. Changing it all at once would be needless churn, but 
>> we'll end up with a lot of code in both styles, partly defeating the 
>> consistency benefits of having a style guideline at all. This is sort of a 
>> general issue with any change to the coding style guidelines. If we change 
>> the guideline for a frequently used construct, the benefit has to be really 
>> high to account for the fact that we'll have many years of inconsistency. 
>> Note that the guidelines are mainly for the benefit of people reading the 
>> code, not writing, and inconsistent style may be worse than consistently 
>> using a slightly worse form.
>> 
>> - The style checker wouldn't be able to check the rule since it's not smart 
>> enough to tell if you are doing a null check, a false check or a zero check. 
>> (I am not sure if it enforces the current rule.)
> 
> That’s kind of a sad reason though. If we think it’s really worth it, we can 
> move to a clang-based approach. It’ll definitely be way more powerful than 
> regular expressions. I really liked how That Other Browser did this (hook 
> into clang for extra diagnostics, and you also get rewriting tools for Free™).

I listed that reason last intentionally. I don't think it's the most important. 
That said, I like the idea of a smarter style checker based on clang.

> 
> 
>> I don't actually have a strong opinion on the substance of the rule, either 
>> version seems fine to me if we were starting from a blank slate. I'm not 
>> entirely sure why the rule ended up that way in the first place. But I 
>> wanted to note these as things to think about.
>> 
>> Regards,
>> Maciej
>> 
>>> On Apr 28, 2017, at 1:00 AM, Keith Miller <[email protected]> wrote:
>>> 
>>> Is there any opposition to relaxing this rule? Speak now or forever hold 
>>> your piece! (not really but I would be curious to hear opposition). 
>>> 
>>> Cheers,
>>> Keith
>>> 
>>>> On Apr 27, 2017, at 10:32 PM, Carlos Garcia Campos <[email protected]> 
>>>> wrote:
>>>> 
>>>> El jue, 27-04-2017 a las 16:06 -0700, JF Bastien escribió:
>>>>> Hello C++ fans!
>>>>> 
>>>>> The C++ style check currently say:
>>>>> Tests for true/false, null/non-null, and zero/non-zero should all be
>>>>> done without equality comparisons
>>>>> 
>>>>> I totally agree for booleans and pointers… but not for integers. I
>>>>> know it’s pretty much the same thing, but I it takes me slightly
>>>>> longer to process code like this:
>>>>> 
>>>>> int numTestsForEqualityComparison = 0:
>>>>> // Count ‘em!
>>>>> // …
>>>>> if (!numTestsForEqualityComparison)
>>>>>   printf(“Good job!”);
>>>>> 
>>>>> I read it as “if not number of tests for equality comparison”. That's
>>>>> weird. It takes me every slightly longer to think about, and I’ve
>>>>> gotten it wrong a bunch of times already. I’m not trying to check for
>>>>> “notness", I’m trying to say “if there were zero tests for equality
>>>>> comparison”, a.k.a.:
>>>>> 
>>>>> if (numTestsForEqualityComparison == 0)
>>>>>   printf(“Good job!”);
>>>>> 
>>>>> So how about the C++ style let me just say that? I’m not suggesting
>>>>> we advise using that style for integers everywhere, I’m just saying
>>>>> it should be acceptable to check zero/non-zero using equality
>>>>> comparison.
>>>> 
>>>> I agree, it's also quite confusing when using strcmp, because !strcmp
>>>> means the strings are equal. It's not only more difficult to read, I've
>>>> seen patches with wrong strcmp checks because of that.
>>> 
>>> I also think this could be solved by #defining a success a C call positive 
>>> result that is 0 (e.g. CCallSuccess), regardless of the choice we make here.
>>> 
>>>> 
>>>>> 
>>>>> !!Thanks (i.e. many thanks),
>>>>> 
>>>>> JF
>>>>> 
>>>>> p.s.: With you I am, fans of Yoda comparison, but for another day
>>>>> this will be.
>>>>> _______________________________________________
>>>>> webkit-dev mailing list
>>>>> [email protected]
>>>>> https://lists.webkit.org/mailman/listinfo/webkit-dev
>>>> _______________________________________________
>>>> webkit-dev mailing list
>>>> [email protected]
>>>> https://lists.webkit.org/mailman/listinfo/webkit-dev
>>> 
>>> _______________________________________________
>>> webkit-dev mailing list
>>> [email protected]
>>> https://lists.webkit.org/mailman/listinfo/webkit-dev
>> 
>> _______________________________________________
>> webkit-dev mailing list
>> [email protected]
>> https://lists.webkit.org/mailman/listinfo/webkit-dev
> 
_______________________________________________
webkit-dev mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-dev

Reply via email to