List of software anti-patterns
From HandWiki
Short description: none
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.
Generic software design anti-patterns
- Abstraction inversion – Computer programming anti-pattern
- Ambiguous viewpoint – Lack of clarity during software design
- Big ball of mud – Software whose source code is an incomprehensible mess
- Database-as-IPC – Misusing databases for temporary messages
- Inner-platform effect
- Input kludge – Type of failure in software
- Interface bloat – Overload of elements on an interface
- Magic pushbutton – Common anti-pattern in graphical user interfaces
- Stovepipe system – Isolated IT system
Object-oriented anti-patterns
- Anemic domain model – Programming anti-pattern
- Call super – Anti-pattern in object-oriented programming
- Circle–ellipse problem – Problem in object-oriented programming
- Circular dependency – Problematic interdependence of software modules
- Constant interface
- God object – Large or very powerful object in programming
- Object orgy – Allowing excessive access to object data
- Poltergeist
- Sequential coupling – Design issue in object-oriented programming
- Yo-yo problem – Symptom of over-complex software design
Programming anti-patterns
- Accidental complexity
- Action at a distance
- Boat anchor
- Busy waiting – Continuously checking a condition in computing
- Cargo cult programming – Ritual inclusion of computer code that serve no purpose
- Coding by exception
- Error hiding
- Lasagna code
- Lava flow
- Loop-switch sequence
- Magic numbers
- Magic strings
- Repeating yourself
- Shotgun surgery – Antipattern in software development
- Soft code
- Spaghetti code – Software source code with poor structure
Methodological anti-patterns
- Copy and paste programming
- Golden hammer
- Social:Invented here – Type of management attitude toward innovation or development
- Not invented here or (NIH) syndrome
- Premature optimization
- Programming by permutation (or "programming by accident", or "programming by coincidence")
- Silver bullet
- Tester-driven development – Software development process
Configuration management anti-patterns
- Dependency hell – Colloquial term for software requiring many conflicting dependencies
- Extension conflict
See also
- List of software architecture styles and patterns
- Software design pattern
- Anti-pattern
- AntiPatterns (book)
References
- ↑ Jimenez, Edward (2006-04-24). Anti-Patterns. http://antipatterns.com/EdJs_Paper/Antipatterns.html.
- ↑ Neill, Colin J.; Laplante, Philip A. (2005-12-15) (in en). Antipatterns: Identification, Refactoring, and Management. Taylor & Francis. ISBN 978-0-8493-2994-4. https://books.google.com/books?id=a7i9ngEACAAJ.
- ↑ 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.
