Anti-patterns are commonly used ways of doing software engineering that are not useful or cause more issues than they solve. See design patterns for the opposite. There are many diverse types of software anti-patterns. Some relate to software design, object-oriented programming, computer programming, methodological, configuration management, DevOps, and other aspects of software engineering. Several books have popularized the idea and teaching of anti-patterns.[1][2]
Anti-patterns can be found in anything that has organization, from project management to cultures,[3] but this list focuses solely on software and computer science anti-patterns.
List of generic software design anti-patterns
editList of object-oriented anti-patterns
editList of programming anti-patterns
edit- Accidental complexity
- Action at a distance
- Boat anchor
- Busy waiting
- Caching failure
- Cargo cult programming
- Coding by exception
- Error hiding
- Hard code
- Lasagna code
- Lava flow
- Loop-switch sequence
- Magic numbers
- Magic strings
- Repeating yourself
- Shooting the messenger
- Shotgun surgery
- Soft code
- Spaghetti code
List of methodological anti-patterns
edit- Copy and paste programming
- Golden hammer
- Invented here
- Not invented here or (NIH) syndrome
- Premature optimization
- Programming by permutation (or "programming by accident", or "programming by coincidence")
- Reinventing the square wheel
- Silver bullet
- Tester-driven development
List of configuration management anti-patterns
editSee also
editReferences
edit- ^ Jimenez, Edward (2006-04-24). Anti-Patterns.
- ^ Neill, Colin J.; Laplante, Philip A. (2005-12-15). Antipatterns: Identification, Refactoring, and Management. Taylor & Francis. ISBN 978-0-8493-2994-4.
- ^ Neill, Colin J.; Laplante, Philip A.; DeFranco, Joanna F. (2011). Antipatterns: Managing Software Organizations and People. Applied Software Engineering Series (2nd ed.). CRC Press. ISBN 9781439862162.