Patterns
Design, architectural, and idiom-level patterns — with their anti-pattern counterparts.
Anti-Patterns
Anti-pattern of relying on accidental behavior without understanding why code works
Anti-pattern indicating need for refactoring
Anti-pattern indicating need for refactoring
Anti-pattern indicating need for refactoring
Anti-pattern indicating need for refactoring
Anti-pattern indicating need for refactoring
Anti-pattern indicating need for refactoring
Anti-patterns related to build and development environment setup that create friction and complexity in the development process.
Anti-pattern indicating need for refactoring
Anti-patterns related to function design including too many arguments, output arguments, flag arguments, and dead functions.
General code smells covering duplication, abstraction levels, dependencies, dead code, inconsistency, and other fundamental anti-patterns.
Code smell indicating the dangerous use of globally accessible mutable data
Anti-pattern where a component's initial render reads browser-only APIs (localStorage/sessionStorage/window/document/matchMedia) or render-time values (Date.now, new Date, Math.random, unzoned toLocale*) so server and client first-render disagree, breaking hydration.
Anti-pattern indicating need for refactoring
Anti-pattern indicating need for refactoring
Code smell indicating modules trading data in excessive secret ways (updated from Inappropriate Intimacy)
Anti-pattern indicating need for refactoring
Anti-pattern indicating need for refactoring
Code smell indicating program elements that are not earning their keep (updated from Lazy Class)
Anti-pattern indicating need for refactoring
Anti-pattern indicating need for refactoring
Code smell indicating imperative loops that could be replaced with pipeline operations
Anti-pattern indicating need for refactoring
Anti-pattern indicating need for refactoring
Code smell indicating overuse of mutable state that makes reasoning about code difficult
Code smell indicating names that fail to communicate intent clearly
Anti-patterns related to naming that reduce code readability, searchability, and expressiveness.
Anti-pattern indicating need for refactoring
Anti-pattern indicating need for refactoring
Anti-pattern indicating need for refactoring
Code smell indicating repeated switch/case logic across the codebase (updated terminology from Switch Statements)
Anti-pattern indicating need for refactoring
Anti-pattern indicating need for refactoring
Anti-pattern indicating need for refactoring
Anti-pattern indicating need for refactoring
Anti-patterns in test code that reduce test effectiveness, maintainability, and reliability.