Description
There are several benefits of knowing and practicing design patterns in software development.
However, there are arguments around using them as mentioned below.
- Unjustified Use
- Ineffective Solutions
- Kludges for weak programming languages
Unjustified Use
This is the problem that haunts many beginners who have just learned about design patterns. They try to apply them everywhere, even in situations where simpler code would do just fine.
There is a saying that exactly depicts such a situation "If you have a hammer, everything looks like a nail".
Inefficient Solutions
The design patterns try to systematize approaches that are widely used and proven.
This unification is viewed by many as a dogma, as implementing the patterns for the sake of using them without adapting them to the project's context, makes solutions ineffective.
Kludges for weak programming languages
When we choose a programming language or a technology that lacks the necessary level of abstraction, then we need to use design patterns to give much-needed abilities to the language, which makes its usage inefficient, ineffective, or full of kludges.
Most modern programming languages internally use some useful design patterns, which provide methods that can easily do the same job.
Overall
We now understood the arguments around the design patterns and their usage.