Improving software design can greatly increase team productivity by allowing developers to refactor easily, propose improvements, and take initiative.
Well-defined interfaces between software modules, such as public classes, methods, endpoints, or events, are crucial for effective communication.
One way to judge if a software module is well-defined is to use deletion thinking , which involves evaluating the number of changes required to remove the module and questioning whether all public interfaces are necessary.
During the design phase, ask yourself: *how many changes will be needed to remove this software piece? * Then, analyze each change to see if any publicly exposed implementation details can be rearranged to hide the mechanism’s implementation
Good architecture is not just about building a structure that stands upright. It’s about creating a design that allows you to easily change or remove parts of it as needed.
To streamline the process of disabling a module, I like to use feature flags during the module dependencies registration (implementation details registrations).
By doing so, I can quickly disable a business process or capability. Determine the number of feature flags required to disable a module, much like using deletion thinking.
It’s essential to double-check software design and implementation to ensure it’s robust and efficient. By considering these critical questions during software development, you can create better-designed software.
The post Mastering Modularization: Deletion Thinking appeared first on ArtOfSoftwareDesign.
Top comments (0)