Partitions and Compositions #5
Replies: 1 comment 2 replies
-
To me, combining things that are separate would be easier and yes, coupling and entanglement are the main reasons I say this but I think it goes a little deeper. When a system is designed as a separate, autonomous component, the boundary (or domain) of that thing is well established. The benefit (that you call out) of "[boundary violation being] practically impossible" is incredibly beneficial. What often plagues monolithic codebases is the lack of enforced boundaries and without careful review from other team members, concerns can be too easily mixed and the boundaries blurred. To me, software should be akin to lego bricks. Every piece has its single, specialized purpose and can be used in an infinite amount of constructions, just like in your screw analogy. When one builds a highly coupled system, it's like supergluing a bunch of legos together. The entire "chunk" has to be replaced or a great amount of expense & effort has to be expended to "uncouple" the bricks.
The second part of "establishing patterns" is the more difficult of these in my opinion. Especially in teams with high churn (or rapid growth), disseminating these patterns is I think one reason why linters/formatters are so prevalent though they only cover style, not programming patterns themselves. Whether a programmer prefers functional/procedural/object oriented or any other paradigm and how they code within it often varies wildly and each approach has its place. |
Beta Was this translation helpful? Give feedback.
-
https://github.com/aaronjensen/software-development/blob/master/partitions-and-compositions.md
Beta Was this translation helpful? Give feedback.
All reactions