On Fri, Feb 17, 2017 at 4:24 PM, ISHIKAWA,chiaki <ishik...@yk.rim.or.jp>
wrote:
>
> Point 5: We should set up a "Flag Day" to convert the source tree into the
> official format THAT IS SUPPORTED by the mechanical converter/formater, and
> change the source code in  one sweep.
>

This seems like it places an enormous amount of trust in the tools not to
accidentally make semantic changes.

FWIW, when we converted NSS entirely to clang-format, we actually checked
that the compiler was producing the same output for the pre- and
post-formatted
versions and at least did some cursory review of the patches themselves. It
might make more sense to do this in stages.

-Ekr




>
>
>>> Cheers,
>>> Gerald
>>>
>>>
>>> On Friday, February 17, 2017 at 5:16:42 PM UTC+11, Nicholas Nethercote
>>> wrote:
>>>
>>>> I personally have a strong preference for operators at the end of lines.
>>>> The codebase seems to agree with me, judging by some rough grepping
>>>>
>>> ('fff'
>>>
>>>> is an alias I have that's roughly equivalent to rgrep):
>>>>
>>>> $ fff "&&$" | wc -l
>>>>   28907
>>>> $ fff "^ *&&" | wc -l
>>>>    3751
>>>>
>>>> $ fff "||$" | wc -l
>>>>   26429
>>>> $ fff "^ *||" | wc -l
>>>>    2977
>>>>
>>>> $ fff " =$" | wc -l
>>>>   39379
>>>> $ fff "^ *= " | wc -l
>>>>     629
>>>>
>>>> $ fff " +$" | wc -l
>>>>   31909
>>>> $ fff "^ *+$" | wc -l
>>>>     491
>>>>
>>>> $ fff " -$" | wc -l
>>>>    2083
>>>> $ fff "^ *-$" | wc -l
>>>>      52
>>>>
>>>> $ fff " ==$" | wc -l
>>>>   1501
>>>> $ fff "^ *== " | wc -l
>>>>   161
>>>>
>>>> $ fff " !=$" | wc -l
>>>>   699
>>>> $ fff "^ *!= " | wc -l
>>>>   129
>>>>
>>>> They are rough regexps and probably have some false positives, but the
>>>> numbers aren't even close; operators at the end of the line clearly
>>>> dominate.
>>>>
>>>> I will conform for the greater good but silently weep inside every time
>>>> I
>>>> see it.
>>>>
>>>> Nick
>>>>
>>>> On Fri, Feb 17, 2017 at 8:47 AM, <gsqu...@mozilla.com> wrote:
>>>>
>>>> Question of the day:
>>>>> When breaking overlong expressions, should &&/|| go at the end or the
>>>>> beginning of the line?
>>>>>
>>>>> TL;DR: Coding style says 'end', I&others think we should change it to
>>>>> 'beginning' for better clarity, and consistency with other operators.
>>>>>
>>>>>
>>>>> Our coding style reads:
>>>>> "Break long conditions after && and || logical connectives. See below
>>>>>
>>>> for
>>>
>>>> the rule for other operators." [1]
>>>>> """
>>>>> Overlong expressions not joined by && and || should break so the
>>>>>
>>>> operator
>>>
>>>> starts on the second line and starts in the same column as the start
>>>>>
>>>> of the
>>>
>>>> expression in the first line. This applies to ?:, binary arithmetic
>>>>> operators including +, and member-of operators (in particular the .
>>>>> operator in JavaScript, see the Rationale).
>>>>>
>>>>> Rationale: operator at the front of the continuation line makes for
>>>>>
>>>> faster
>>>
>>>> visual scanning, because there is no need to read to end of line. Also
>>>>> there exists a context-sensitive keyword hazard in JavaScript; see bug
>>>>> 442099, comment 19, which can be avoided by putting . at the start of a
>>>>> continuation line in long member expression.
>>>>> """ [2]
>>>>>
>>>>>
>>>>> I initially focused on the rationale, so I thought *all* operators
>>>>>
>>>> should
>>>
>>>> go at the front of the line.
>>>>>
>>>>> But it seems I've been living a lie!
>>>>> &&/|| should apparently be at the end, while other operators (in some
>>>>> situations) should be at the beginning.
>>>>>
>>>>>
>>>>> Now I personally think this just doesn't make sense:
>>>>> - Why the distinction between &&/|| and other operators?
>>>>> - Why would the excellent rationale not apply to &&/||?
>>>>> - Pedantically, the style talks about 'expression *not* joined by
>>>>>
>>>> &&/||,
>>>
>>>> but what about expression that *are* joined by &&/||? (Undefined
>>>>>
>>>> Behavior!)
>>>
>>>>
>>>>> Based on that, I believe &&/|| should be made consistent with *all*
>>>>> operators, and go at the beginning of lines, aligned with the first
>>>>>
>>>> operand
>>>
>>>> above.
>>>>>
>>>>> And therefore I would propose the following changes to the coding
>>>>>
>>>> style:
>>>
>>>> - Remove the lonely &&/|| sentence at [1].
>>>>> - Rephrase the first sentence at [2] to something like: "Overlong
>>>>> expressions should break so that the operator starts on the following
>>>>>
>>>> line,
>>>
>>>> in the same column as the first operand for that operator. This
>>>>>
>>>> applies to
>>>
>>>> all binary operators, including member-of operators (in particular the
>>>>>
>>>> .
>>>
>>>> operator in JavaScript, see the Rationale), and extends to ?: where
>>>>>
>>>> the 2nd
>>>
>>>> and third operands should be on separate lines and start in the same
>>>>>
>>>> column
>>>
>>>> as the first operand."
>>>>> - Keep the rationale at [2].
>>>>>
>>>>> Also, I think we should add something about where to break expressions
>>>>> with operators of differing precedences, something like: "Overlong
>>>>> expressions containing operators of differing precedences should first
>>>>>
>>>> be
>>>
>>>> broken at the operator of lowest precedence. E.g.: 'a+b*c' should be
>>>>>
>>>> split
>>>
>>>> at '+' before '*'"
>>>>>
>>>>>
>>>>> A bit more context:
>>>>> Looking at the history of the coding style page, a certain "Brendan"
>>>>>
>>>> wrote
>>>
>>>> that section in August 2009 [3], shortly after a discussion here [4]
>>>>>
>>>> that
>>>
>>>> seemed to focus on the dot operator in Javascript. In that discussion,
>>>>> &&/|| appear in examples at the end of lines and nobody talks about
>>>>>
>>>> that
>>>
>>>> (because it was not the main subject, and/or everybody agreed with it?)
>>>>>
>>>>> Discuss!
>>>>>
>>>>>
>>>>> [1] https://developer.mozilla.org/en-US/docs/Mozilla/Developer_
>>>>> guide/Coding_Style#Control_Structures
>>>>> [2] https://developer.mozilla.org/en-US/docs/Mozilla/Developer_
>>>>> guide/Coding_Style#Operators
>>>>> [3] https://developer.mozilla.org/en-US/docs/Mozilla/Developer_
>>>>> guide/Coding_Style$compare?locale=en-US&to=7315&from=7314
>>>>> [4] https://groups.google.com/d/msg/mozilla.dev.platform/
>>>>> Ji9lxlLCYME/zabUmQI9S-sJ
>>>>> ____________________________________________
>>>>>
>>>> dev-platform@lists.mozilla.org
>> https://lists.mozilla.org/listinfo/dev-platform
>>
>>
>>
> _______________________________________________
> dev-platform mailing list
> dev-platform@lists.mozilla.org
> https://lists.mozilla.org/listinfo/dev-platform
>
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to