<div dir="ltr"><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Dec 15, 2020 at 10:04 AM David Greene via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Nikita Popov via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> writes:<br>
<br>
> 2. It causes significant right-ward drift. Especially for declarations,<br>
> it's somewhat common for code ending up like this...<br>
><br>
>    Foo SomeClassName::someMethodName(Bar &Arg1,<br>
>                                       Bar &Arg2,<br>
>                                       Bar &Arg3,<br>
>                                       Bar &Arg4) {<br>
><br>
> ... because there is just enough space to fit each argument individually,<br>
> but still a need to break each one out on a separate line. Closure<br>
> arguments are another common case of very awkward formatting.<br>
<br>
FWIW, I have actually drifted toward this style in my own non-LLVM code.<br>
That is, if there are more arguments than can fit on a single line, each<br>
gets its own line.  For example:<br>
<br>
void short_args(double an_argument_name, int another_parameter);<br>
<br>
void long_args(double first_argument,<br>
               int second_argument,<br>
               int *third_argument,<br>
               int fourth argument);<br></blockquote><div>This also saves the annoying pain of everything shifting within a line just because an argument got added (which messes up line-based diffs). That pain is most noticeable when adding new members (or just updating initializers) in member initializer lists for constructors.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
I find this easier to read than:<br>
<br>
void long_args(double first_argument, int second_argument,<br>
               int *third_argument, int fourth argument);<br>
<br>
It's easier for me because I need only scan vertically to find the<br>
arguments, not both vertically and horizontally.<br>
<br>
Long function names can be problematic and you're right about changing<br>
names requiring reformatting.  I've toyed with this style:<br>
<br>
void a_really_long_and_descriptive_function_name(<br>
       double first_argument,<br>
       int second_argument,<br>
       int *third_argument,<br>
       int fourth argument);<br>
<br>
I haven't yet convinced myself that this is a good idea.  It looks too<br>
jumbled to me and is more difficult to immediately find the start of the<br>
argument list.<br>
<br>
                 -David<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div></div>