underabstraction
Underabstraction is a term used in computer science and software engineering to describe the phenomenon where a software system provides too many low-level details, making it difficult to understand and modify. This is the opposite of abstraction, where a system is designed to hide low-level details and focus on high-level functionality.
Underabstraction often occurs when a software system is designed with a narrow focus on implementation details,
The consequences of underabstraction can be severe, including increased maintenance costs, reduced code reuse, and decreased
There are several contributing factors to underabstraction, including:
* Overemphasis on performance or efficiency
* Poor design choices, such as using tightly coupled classes or procedures
* Inadequate use of modularity and separation of concerns
* Incomplete or inaccurate documentation
To avoid underabstraction, software developers should strive to design systems that are modular, adaptable, and easy
The best practices for mitigating underabstraction include:
* Using modular and loose-coupled design patterns
* Developing software that is composable and extensible
* Focusing on high-level interfaces and APIs
* Improving documentation and code readability
* Using test-driven development to ensure code quality and modularity.