> 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 <https://chromium.googlesource.com/chromium/src/tools/clang/+/master> (hook into clang for extra diagnostics, and you also get rewriting tools for Free™). > 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] >> <mailto:[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] >>> <mailto:[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] <mailto:[email protected]> >>>> https://lists.webkit.org/mailman/listinfo/webkit-dev >>>> <https://lists.webkit.org/mailman/listinfo/webkit-dev> >>> _______________________________________________ >>> webkit-dev mailing list >>> [email protected] <mailto:[email protected]> >>> https://lists.webkit.org/mailman/listinfo/webkit-dev >>> <https://lists.webkit.org/mailman/listinfo/webkit-dev> >> _______________________________________________ >> webkit-dev mailing list >> [email protected] <mailto:[email protected]> >> https://lists.webkit.org/mailman/listinfo/webkit-dev >> <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

