Merge code will be harder when there were some foundation module refactorings in both branches.

For an simplest example, you do module A refactoring A for feature A in branch feature/A, but for some reason you can not merge them back to develop branch right now, and you do another module A refactoring B for feature B in branch feature/B, which should be merge back to develop right now. Now, when you need merge feature/A back to develop, it’s very likely that there will be a large number of conflicts need resolve and by the way it’s also very likely that you can not use git tools such like Cherry Pick any more. In this case you can only do manually merge code by code, which is painful and error prone.

So, the better way to avoid these things happen is to use separate commit or branch when doing refactoring, and in this way you can merge some module refactorings at an earlier time easily, and make life easy.:D