Hi Bernardo,

Thanks for bringing this up!

Last year I was looking into enforcing curly braces as defined in Code Style
<https://cassandra.apache.org/_/development/code_style.html> and had some
thoughts on how to make this work but hit a bit of a brick wall:

https://issues.apache.org/jira/browse/CASSANDRA-19276

I don't think there is an easy way as is to enforce this with checkstyle
currently:

"{ and } are placed on a new line except when empty or opening a multi-line
lambda expression. Braces may be elided to a depth of one if the condition
or loop guards a single expression."

Without making changes to checkstyle itself (e.g.:
https://github.com/checkstyle/checkstyle/issues/12226).

I think if we were to add a new rule around brackets and newlines, we would
ideally try to make it match the Code style definition as its declared, and
hopefully it would not be too require touching a lot of files (which maybe
the case unfortunately).

Thanks,
Andy

On Wed, Jan 15, 2025 at 6:10 PM Benedict <bened...@apache.org> wrote:

> Even something as simple as the curly brace rule has sensible exceptions.
> I’m pretty hard -1 on letting a linter make all our editing decisions.
> Formatting is a contextual choice about how to best represent information
> to the reader, and we should not abdicate responsibility. The style guide
> is exactly that, a guide and that helps us navigate editing choices, and it
> can be evolved or refined via discussion and experimentation.
>
> For example, the second clause in your quote (re: lambdas) came about only
> because we could break the restrictions of the first clause and demonstrate
> an improvement to readability.
>
> If this is a pain point during review, either some people are too eager to
> point to the code style guide, or perhaps your IDE defaults need updating.
> This shouldn’t cause lots of traffic.
>
> People should try not to overly nitpick formatting, though of course a
> balance is to be struck between contributors’ expression of their code and
> that code sitting neatly in its context in the codebase.
>
> > On 15 Jan 2025, at 23:50, Bernardo Botella <conta...@bernardobotella.com>
> wrote:
> >
> > Hi everyone!
> >
> > I wanted to raise a question about code style for the project. I've been
> receiving some feedback on PRs about the need to:
> > - Have curly braces start on a new line
> > - Remove curly braces if the condition or loop has only one expression
> >
> > Taking a look at the official Code Style stated in the web, I read that:
> > "{ and } are placed on a new line except when empty or opening a
> multi-line lambda expression. Braces may be elided to a depth of one if the
> condition or loop guards a single expression."
> >
> > Which addresses the first type of comments I mentioned (curly braces
> starting in a new line), but leaves open the second type of comments
> (remove not needed curly braces).
> >
> > But, when looking at the checkstyle.xml, I don't see any rule enforcing
> any of those two types of comments.
> >
> > I believe checkstyle.xml should be our contract, so I'm proposing here:
> >
> > For "curly braces starting in a new line" rule, add something like what
> we already have on Sidecar and Analytics projects:
> > <module name="LeftCurly">
> >            <!-- Checks for placement of the left curly brace ('{'). -->
> >            <property name="option" value="nl"/>
> > ...
> > </module>
> >
> > That way, we can fail fast and not worry about those comments on PRs.
> This of course may be painful, as we probably will have to fix a bunch of
> wrongly placed brackets all over the place.
> >
> > If there are no concerns here, I'll be more than happy to bite the
> bullet and add a patch for this.
> >
> >
> >
> > For "remove not needed curly braces", I understand that it tends to be
> the preference on the code, so we either modify the documentation and add a
> rule for that on the checkstyle.xml, or we are fine with that style and
> there is no need to remove them on patches.
> >
> > I wanted to hear the thoughts on the community for this one. My
> preference is to always use brackets, but that's just a preference, so it's
> perfectly fine not to enforce it and leave the documentation as is.
> >
> > Thanks everyone!
> > Bernardo
>

Reply via email to