3 ms·
> Better to someone often means applying a pattern that they just discovered in a blog post that week. Software design is still entirely subjective. No. There
by mattgreenrocks 6y ago
> Better to someone often means applying a pattern that they just discovered in a blog post that week. Software design is still entirely subjective.
No. There are plenty of not-purely-subjective criteria to justify refactors:
* the refactor improves abstraction quality
* design improvements that result in edge cases being obviated
* coupling is diminished/cohesion is improved
The relativistic "there is no perfect software design" view is good inasmuch that you don't make idols out of any particular design approach. It is bad when it becomes a fatalistic, thought-terminating meme used to justify one's own inaction. Software design is difficult work. That doesn't mean it isn't possible because the Internet hasn't figured out an exact recipe for creating it. :)
- amw-zero 6y ago> the refactor improves abstraction quality The quality of abstractions is entirely subjective. > coupling is diminished / cohesion is improved This is also entirely subjective. The idea that eliminating coupling is inherently good is an unsound premise. There’s no proof that coupling is bad, and even if there were, there’s also the conversation to be had about which things should be coupled, which is surely a subjective conversation. > design improvements resulting in edge cases being obviated I guess this one is slightly closer to being an objective good. Though even still, I think this is linear thinking at its finest. You may be getting rid of some edge cases but introducing others. Every design is a trade off, and evaluating tradeoffs is a subjective act.
- mattgreenrocks 6y agoWhy is it so important if improvements are “objectively” good?
- amw-zero 6y agoHow else would you know if they are improvements?
- mattgreenrocks 6y agoIntuition and accumulated wisdom work well for me.
- amw-zero 6y agoRight. So it’s based on your own personal aesthetics and opinions. Which is fine. Just don’t be so convicted in code review, because you’re just spouting opinions.