| I don’t have your experience but I personally think some of this feedback can be warranted. > Can't refactor code because it changes too many files and too many lines. This really depends on the change. If you are just doing a mass rename like updating a function signature, fair enough but if you changing a lot of code it’s very hard to review it. Lots of cognitive load on the reviewer who might not have the same understanding of codebase as you. > Can't commit large chunks of well tested code that 'Does feature X', because... too many files and too many lines. Same as the above, reviewing is hard and more code means people get lazy and bored. Just because the code is tested doesn’t mean it’s correct, just means it passes tests. > Have to split everything down into a long sequence of consecutive pull requests that become a process nightmare in its own right This is planning issue, if you correctly size tickets you aren’t going to end up in messy situations as often. > The documentation comments gets nitpicked to death with mostly useless comments about not having periods at the ends of lines Having correctly written documentation is important. It can live a long time and if you don’t keep an eye on it can becomes a mess. Ideally you should review it before you submitting it to avoid these issues. > End up having to explain every little detail throughout the function as if I'm trying to produce a lecture, things like `/* loop until not valid */ while (!valid) {...` seemed to be what they wanted, but to me it made no sense what so ever to even have that comment I definitely agree with this one. Superfluous comments are a waste of time. Obviously this is just my option and you can take things too far but I do think that making code reviewable (by making it small) goes a long way. No one wants to review 1000s lines of code at once. It’s too much to process and people will do a worse job. Happy to hear your thoughts. |
No, it’s “this refactor looks very different to the original code because the original code thought it was doing two different things and it’s only by stepping through it with real customer data that you realized with the right inputs (not documented) it could do a third thing (not documented) that had very important “side effects” and was a no-op in the original code flow. Yea, it touches a lot of files. Ok, yea, I can break it up step by step, and wait a few days between approval for each of them so that you never have to actually understand what just happened”.