Anti-patterns, also referred to as pitfalls, are classes of commonly-reinvented bad solutions to problems. They are studied, as a category, in order that they may be avoided in the future, and that instances of them may be recognised when investigating non-working systems.
The term originates in computer science, from the Gang of Four (software) s Design Patterns book, which laid out examples of good programming practice. The authors termed these good methods design pattern (computer science) , and opposed them to anti-patterns . Part of good programming practice is the avoidance of anti-patterns.
The concept is readily applied to Engineering in general, and also applies outside engineering, in any human endeavour. Although the term is not commonly used outside engineering, the concept is quite universal.
=Some recognised computer programming anti-patterns=
Abstraction inversion
Accidental complexity
Action at a distance (computer science)
Accumulate and fire
Ambiguous viewpoint
Analysis paralysis
BaseBean
Big ball of mud
Blind faith (computer science)
Boat anchor
Busy spin
Caching failure
Checking type instead of membership#Possible programming mistakes
Code momentum
Coding by exception
Continuous obsolescence
Copy and paste programming
Creeping featurism
Dead end (computer science)
Design by committee
DLL hell
Double-checked locking
Empty subclass failure
Escalating commitment to a single, failing course of action
Fencepost error
Gas factory
God object
Improbability factor
I told you so
Input kludge
Interface bloat
Hard code
Lava flow (programming)
Magic number (programming)#Magic numbers in code
Magic pushbutton
Management by numbers
Mushroom management
Object cesspool
Optimization (computer science)#When to optimize
Poltergeist (computer science)s
Procedural code
Race hazard
Reinventing the wheel
Reinventing the square wheel
Scope creep
Smoke and mirrors
Software bloat
Spaghetti code
Stovepipe system
Vendor lock-in
Warm body
Yo-yo problem
= Some society anti-patterns =
The status of some of these is likely to be controversial.
Censorship
Dictatorship
Discrimination
Dogmatic religion
Intolerance
Monopoly
Popularity contest
Political corruption
Privatization of public transport
Racial segregation
Single-party system
Totalitarianism
Two-party politics
Witch hunt
Year Zero (political notion) (sudden extreme social change)
= See also =
Code smell
= References =
Perl Design Patterns Book – A free online book
William J. Brown, Raphael C. Malveau, Hays W. McCormick III, and Thomas J. Mowbray. 1998. AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis . John Wiley & Sons. ISBN 0471197130.
= External links =
[http://www.antipatterns.com/briefing/ Tutorial on anti-patterns]
[http://c2.com/cgi/wikiAntiPatternsCatalog Anti-patterns catalog]
[http://thedailywtf.com/ The Daily WTF]