Is there a correct usage for design-patterns? If so, can someone clarify it to me? Every time I see the tag, I'm left asking, "why is this a tag?"
Here's the snippet:
A design pattern is a general reusable solution to a commonly occurring problem in software design.
And here's the full Wiki entry:
A design pattern is a description or template that helps solve a reoccurring problem, which can be used in many different situations.
It is common to classify design patterns into the following categories:
- Creational design patterns deal with object creation mechanisms, trying to create objects in a manner suitable to the situation. The basic form of object creation could result in design problems or added complexity to the design. Creational design patterns solve this problem by somehow controlling object creation.
- Structural design patterns ease the design by identifying a simple way to realize relationships between entities.
- Behavioral design patterns identify common communication patterns between objects and realize these patterns. By doing so, these patterns increase flexibility in carrying out this communication.
- Concurrency patterns deal with the multi-threaded programming paradigm.
Related to design patterns, are architectural patterns. These are often concepts which solve and delineate some essential cohesive elements of a software architecture.
That's all well and good. I'm just not sure how relevant or useful the tag is to Code Review.
Reviewing design is a bit of a gray area in terms of whether or not the question is on-topic. However, reviewing whether or not a particular piece of code conforms to a particular, well-known design pattern (such as mvc) should be a perfectly on topic question. But if an asker wants a review of their code for compliance to a particular design pattern, why do we need the design-patterns tag when we can use the specific design pattern as the tag?