[llvm-dev] Change coding style for argument alignment?
Chris Lattner via llvm-dev
llvm-dev at lists.llvm.org
Sat Dec 19 10:35:21 PST 2020
On Dec 3, 2020, at 1:00 PM, Nikita Popov via llvm-dev <llvm-dev at lists.llvm.org> wrote:
> Hi,
> LLVM currently uses a coding style where arguments and parameters need to be aligned to the opening parenthesis "(".
>
> someFunctionCall(Arg1, Arg2,
> Arg3, Arg4);
>
> This style guideline is unfortunate for a couple of reasons:
>
> 1. If a function is renamed, it is necessary to also reindent the arguments at all call-sites. For functions with many or complex arguments, this may require significant reflow.
>
> 2. It causes significant right-ward drift. Especially for declarations, it's somewhat common for code ending up like this...
>
> Foo SomeClassName::someMethodName(Bar &Arg1,
> Bar &Arg2,
> Bar &Arg3,
> Bar &Arg4) {
>
> ... because there is just enough space to fit each argument individually, but still a need to break each one out on a separate line. Closure arguments are another common case of very awkward formatting.
>
> 3. There are some arcane rules about when this is not the preferred style and you're supposed to indent arguments on the following line instead.
>
> Is there any chance that the style could be changed towards indenting (but not aligning) the following line instead?
>
> someFunctionCall(
> Arg1, Arg2, Arg3, Arg4);
>
> This is unaffected by renames, does not cause rightward drift and results in very predictable formatting.
>
> Based on past discussions, LLVM seems to be open to improving coding style for the better, so I thought I'd give this a shot, as this is a continuous source of friction for me.
I support this change. I think you’ve done a good job of laying out a principled reason that this approach is better, and I don’t see any significant advantages to the current approach. We should obviously keep the arguments on the same line if they fit though.
-Chris
More information about the llvm-dev
mailing list