Andy,

I have checked if ant generate-idea-files sets up the formatter correctly
and it seems it still does the job.

When I removed .idea dir and opened e.g. cassandra-5.0 branch in IDEA, then
the code style / formatter was not applied. But as soon as you execute "ant
generate-idea-files" on a clean project (without .idea dir, I think it will
be actually replaced when found but anyway), then I see in the code style
example window that braces are put on the new lines (Settings -> Editor ->
Code Style -> Java -> Wrapping and Braces - I see braces are on new lines
out of the box).

So I think we do not need to do anything. It is all configured properly
already. People just need to hit the formatter (ctrl + shift + l).

You also correctly pointed out that you can format automatically on saving
so you don't even need to think about it. I reformat code very often,
borderline OCD hitting that shortcut every now and then just because I
always want to look at the code which complies to the code style we have.

On Thu, Jan 16, 2025 at 9:46 PM Tolbert, Andy <x...@andrewtolbert.com> wrote:

> Hi Stefan,
>
> > It is somewhere in Settings -> Editor -> Code Style -> Java -> Wrapping
> and Braces and there you can fiddle with it endlessly. Maybe putting that
> into some xml as part of generate-idea-files would do it?
>
> Ah yes, good point, that evidentally does work well.  Code > Reformat
> File, does appear to put braces on the next line (except for Lambdas which
> is what we want), so that actually works quite well.
>
> I also see that there is also an option in IntelliJ you can set to
> Reformat code only in changed lines. Navigate to Tools > Action On Save >
> Reformat Code and set "Changed lines".  I'll be making use of that from
> here on :)
>
> Thanks,
> Andy
>
> On Thu, Jan 16, 2025 at 2:42 PM Štefan Miklošovič <smikloso...@apache.org>
> wrote:
>
>> Couldn't say it better.
>>
>> My position is that I do not mind too much where the braces are (new line
>> or not). I do mind that it is / would be inconsistent. At this point, I
>> think we keep putting them on new lines just because the majority of that
>> already is and nobody wants to break the consistency.
>>
>> On the other hand, If it was my choice solely, I got used to the braces
>> on new lines over time and I just find it better / visually more pleasing.
>> I understand that this is a highly personal matter though.
>>
>> Andy,
>>
>> It is somewhere in Settings -> Editor -> Code Style -> Java -> Wrapping
>> and Braces and there you can fiddle with it endlessly. Maybe putting that
>> into some xml as part of generate-idea-files would do it?
>>
>> I honestly do not have a clue how that was configured in my case. I have
>> just "set it up just once and live with it for a decade" mindset.
>>
>> On Thu, Jan 16, 2025 at 9:30 PM Brandon Williams <dri...@gmail.com>
>> wrote:
>>
>>> I think we inherited brace-on-newline, nobody has ever liked it
>>> (stockholm syndrome aside.)  As I recall we decided against changing
>>> it in the past because it would be a huge patch and likely provide
>>> merge pain for a long time, unless we do it in all the branches.
>>>
>>> Kind Regards,
>>> Brandon
>>>
>>> On Thu, Jan 16, 2025 at 2:20 PM Jordan West <jw...@apache.org> wrote:
>>> >
>>> > I think we are in strong agreement Stefan. It’s more convenient
>>> because we took the time to make it automatic and not require human effort.
>>> >
>>> > Yet it’s still imperfect as Bernardo pointed out.
>>> >
>>> > And as Caleb pointed out, had we taken a more convenential Java
>>> project approach it would’ve been even better / easier.
>>> >
>>> > Jordan
>>> >
>>> > On Thu, Jan 16, 2025 at 12:17 Štefan Miklošovič <
>>> smikloso...@apache.org> wrote:
>>> >>
>>> >> _ The burden shouldn’t be on humans to place or check that every
>>> curly brace is on its own line._
>>> >>
>>> >> Who is actually doing this? It is one shortcut in IDEA and it all
>>> places them correctly. I don't even know what the shortcut is, I never
>>> think about that consciously anymore.
>>> >>
>>> >> Isn't that what ant generate-idea-files does automatically? (that it
>>> sets code style like that)
>>> >>
>>> >> A committer can just format that upon merge, we do not need to stress
>>> about that during reviews.
>>> >>
>>> >> On Thu, Jan 16, 2025 at 8:44 PM Jordan West <jw...@apache.org> wrote:
>>> >>>
>>> >>> IMO the more we can enforce the style guide programmatically the
>>> better. It was a big improvement when we got parts of it in IntelliJ. It
>>> saves time and reduces friction. The burden shouldn’t be on humans to place
>>> or check that every curly brace is on its own line. And if we say don’t
>>> check during review or automatically then why have a guide? Sure we can
>>> nitpick on the definition of the word “guide” here but I think we all
>>> mostly agree a uniform style (with some wiggle room for edge cases) is good
>>> for the project. Or again, why have the guide?
>>> >>>
>>> >>> The challenge is getting these tools to do what we want can be a
>>> pain as folks who have explored it have outlined. So then I think it comes
>>> back to Josh’s question (to paraphrase) of “is it good enough as is”? And
>>> as an aside we might want to ask ourselves “why have we chosen a style
>>> guide that is hard to implement in these tools?”
>>> >>>
>>> >>> If folks see some easy wins and want to volunteer time to make the
>>> changes I think we should encourage that.
>>> >>>
>>> >>> On Thu, Jan 16, 2025 at 07:35 Josh McKenzie <jmcken...@apache.org>
>>> wrote:
>>> >>>>
>>> >>>> Perhaps a “Review Guide” is what we need to make sure we keep
>>> review primarily focused on the core contribution, and to help avoid folk
>>> getting bogged down in style sniping.
>>> >>>>
>>> >>>> I recall reading through / offering this guide in the past as a
>>> starting point for an org I was managing at the time:
>>> https://google.github.io/eng-practices/review/reviewer/
>>> >>>>
>>> >>>> Been years; might be worth it to have a skim through that and see
>>> if it could serve as a reasonable starting point for us if someone has the
>>> inclination.
>>> >>>>
>>> >>>> On Thu, Jan 16, 2025, at 9:17 AM, Benedict wrote:
>>> >>>>
>>> >>>>
>>> >>>> I can imagine that it might cause some frustrating review
>>> interactions people would like to avoid, but for solving that I’d prefer we
>>> take a more social approach.
>>> >>>>
>>> >>>> Review shouldn’t spend much time on minor style points, and these
>>> should normally be framed as suggestions. Obviously newer contributors may
>>> need pointing to the style guide as something to familiarise themselves
>>> with, but it shouldn’t readily be invoked as a “thou shalt do this” tool.
>>> >>>>
>>> >>>> Perhaps a “Review Guide” is what we need to make sure we keep
>>> review primarily focused on the core contribution, and to help avoid folk
>>> getting bogged down in style sniping.
>>> >>>>
>>> >>>>
>>> >>>> On 16 Jan 2025, at 14:08, Josh McKenzie <jmcken...@apache.org>
>>> wrote:
>>> >>>>
>>> >>>> 
>>> >>>> Right now our codebase is pretty consistent, especially for not
>>> having a linter enforcing this kind of thing. Are we trying to solve for
>>> codebase consistency, education of new contributors, both? Neither?
>>> >>>>
>>> >>>> If just solving for consistency I'd argue we're good. If educating
>>> new contributors, the Code Style guide seems pretty thorough to me?
>>> https://cassandra.apache.org/_/development/code_style.html
>>> >>>>
>>> >>>> All of which is to say - it feels like the status quo is fine here
>>> for me. i.e. it's not clear to me what problem we're trying to solve w/a
>>> change here.
>>> >>>>
>>> >>>> On Wed, Jan 15, 2025, at 9:58 PM, guo Maxwell wrote:
>>> >>>>
>>> >>>> I agree with you for all these two points.
>>> >>>>
>>> >>>> I think you should open a ticket to solve this if you want to add a
>>> rule to checkstyle, as I know there are many old codes that do not comply
>>> with this rule.
>>> >>>> For point 2, this really feels like personal preference, but I'd
>>> probably listen to the reviewer's opinion.😁
>>> >>>>
>>> >>>> Tolbert, Andy <x...@andrewtolbert.com> 于2025年1月16日周四 08:47写道:
>>> >>>>
>>> >>>> Reading back https://issues.apache.org/jira/browse/CASSANDRA-19276
>>> a bit more, I think I *was* able to make checkstyle bend to the "Code
>>> Style" definition by ignoring lambda tokens.  It's just that there were a
>>> lot of "violations" which defined a method on one line:
>>> >>>>
>>> >>>> public int  getActiveTaskCount()    { return 0; }
>>> >>>> public long getCompletedTaskCount() { return 0; }
>>> >>>> public int  getPendingTaskCount()   { return 0; }
>>> >>>> public int  getCorePoolSize()       { return 0; }
>>> >>>> public int  getMaximumPoolSize()    { return 0; }
>>> >>>>
>>> >>>> I felt that this code was perfectly readable and wouldn't be right
>>> to change.  This is what I wanted to make checkstyle consider acceptable.
>>> >>>>
>>> >>>> I think it would be really nice if checkstyle would fail for the
>>> more obvious case we want to avoid that comes up in reviews or sometimes
>>> slips into the codebase if not caught by a reviewer, e.g.:
>>> >>>>
>>> >>>> if {
>>> >>>>     //...
>>> >>>> }
>>> >>>>
>>> >>>> Thanks,
>>> >>>> Andy
>>> >>>>
>>> >>>> On Wed, Jan 15, 2025 at 6:21 PM Tolbert, Andy <x...@andrewtolbert.com>
>>> wrote:
>>> >>>>
>>> >>>> Hi Bernardo,
>>> >>>>
>>> >>>> Thanks for bringing this up!
>>> >>>>
>>> >>>> Last year I was looking into enforcing curly braces as defined in
>>> Code Style 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