Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice. -- ChristopherAlexander
An amelioration pattern is a prescription for how to edit (i.e., rearrange, add and delete) an existing situation (represented by a pattern) to achieve some further effect or behavior. The existing situation doesn't have to be bad in the absolute sense, just bad in conjunction with the desired new behavior. In this sense, an amelioration pattern is transformational in character. It probably should describe how to transform from one (bad) situation or pattern into another (better) pattern.
An AntiPattern is a pattern that tells how to go from a problem to a bad solution. (Contrast to an AmeliorationPattern, which is a pattern that tells how to go from a bad solution to a good solution.) A good AntiPattern also tells you why the bad solution looks attractive (e.g. it actually works in some narrow context), why it turns out to be bad, and what positive patterns are applicable in its stead. Accordingly to JimCoplien: an anti-pattern is something that looks like a good idea, but which backfires badly when applied. It's not fun documenting the things that most people agree won't work, but it's necessary because many people may not recognize the AntiPattern. [NOTE: Some discussion of this on ThreadMode, ProblemsWithDocumentation, etc. Look around, plenty of hand-wringing over this.] In the old days, we used to just call these 'bad ideas'. The new name is much more diplomatic.
Something that we don't know if it is a AmeliorationPattern or an AntiPattern.
Dark here in the Star Wars universe vernacular. I suggest that DarkPatterns are frequently encountered solutions to common problems which:
- are extremely seductive
- seem like the easy way to quick success
- but ultimately corrupt whatever good intentions led to their adoption