I'm torn on this, honestly.  I completely agree that cosmetic refactoring
gets in the way of review and the risk can be more than the reward,
especially in a subtle bit of code.
That being said, I'm a big fan of opportunistically refactoring to
generalize or correct faulty assumptions.  Often, I can't justify making an
abstraction until I have seen the need more than once, so I will make the
abstraction, as long as it's small and well-contained, in the PR
opportunistically, that motivates the 2nd usage.  I like that kind of
opportunistic refactoring and I think that shouldn't be dissuaded.

I agree with Otto, we should have a round of discussion on the doc text and
I'd suggest we clarify to be cosmetic refactoring solely due to readability
concerns.

Just my $0.02

On Tue, May 29, 2018 at 7:40 PM Otto Fowler <ottobackwa...@gmail.com> wrote:

> On top of this, refactoring under another PR’s goals tends to be less
> documented as to the intent
> and effect.
>
> +1 for the idea, we should have a vote round or edit round on the doc’s
> specific text.
> Although I will say, that some things it doesn’t matter how much you break
> them up wrt reviews.
> We should have so many reviewers that this is a problem.
>
>
>
>
> On May 29, 2018 at 20:05:49, Michael Miklavcic (
> michael.miklav...@gmail.com)
> wrote:
>
> I want to bring up the subject of code refactoring and how we should manage
> this in PR's as our product evolves. As Metron matures, it's only natural
> that we'll have and increasing number of contributors, and subsequently
> contributions affecting many hardened parts of the code base. We've
> generally not been particular about mixing refactoring changes with other
> types of improvements or bug fixes. As a general best practice for software
> engineering it is indeed desirable to undergo regular refactoring as a
> matter of "scouts' rules" or "fixing broken windows." This helps keep code
> readable and has the benefit of a fresh pair of eyes to see code in a new
> way that allows the newcomer to introduce clarifying changes that the
> original author(s) may not have considered.
>
> While refactoring is generally applauded (because we have unit,
> integration, and acceptance tests backing our changes), it does pose some
> challenges during the review process. Depending on the type of PR, the
> refactoring work can at times be many orders of magnitude larger than the
> code pertinent to the desired change in functionality, whether bug fix or
> feature enhancement, itself. While tests should protect against unintended
> side effects (and sometimes they are also refactored) it does introduce the
> possibility of new subtle bugs. It also makes a lot of PR's a conflated mix
> of comments pertinent to the improvement/fix and opinions about best
> practices around coding style.
>
> I propose a simple change - we update our coding style guidelines in
> section 2.1 to expand on refactoring. We currently cover whitespace and
> comments:
>
> "Don’t combine code changes with lots of edits of whitespace or comments;
> it makes code review too difficult. It’s okay to fix an occasional comment
> or indenting, but if wholesale comment or whitespace changes are needed,
> make them a separate PR."
>
> I propose we expand this to say:
>
> "Don’t combine code changes with lots of edits of whitespace, comments, or
> code changes specifically for refactoring purposes; it makes code review
> too difficult. It’s okay to fix an occasional comment or indenting, but if
> wholesale comment, whitespace or other refactoring changes are needed, make
> them a separate PR."
>
>
> I believe this provides additional clarity. I think it's one thing to
> extract a method or introduce changes for code you're specifically
> modifying, and another thing to introduce changes that affect surrounding
> code. I would also propose we emphasize the Google checkstyle and
> auto-formatting tooling when submitting any changes, but dealing with
> enforcement is not my focus for this discuss thread.
>
> https://cwiki.apache.org/confluence/display/METRON/Development+Guidelines
>
> Best,
> Michael Miklavcic
>

Reply via email to