Abstraction inversion

(Learn how and when to remove this message)

In computer programming, abstraction inversion is an anti-pattern arising when users of a construct need functions implemented within it but not exposed by its interface. The result is that the users re-implement the required functions in terms of the interface, which in its turn uses the internal implementation of the same functions. This may result in implementing lower-level features in terms of higher-level ones, thus the term 'abstraction inversion'.

Possible ill-effects are:

Examples

Alleged examples from professional programming circles include:

Examples that are common outside professional programming circles include:

See also

References

  1. ^ Critique of DIN Kernel Lisp Definition Version 1.2, footnote 2 Archived 2018-05-06 at the Wayback Machine - says (without references) that the term derives from critiques of the Ada rendezvous, appears to be one of the earliest uses.
  2. ^ Programming in Lua : 2.3 - Numbers Accessed 2009-10-12.
  3. ^ lua-users c2: Floating Point Accessed 2009-10-12.
  4. ^ lua-users c2: Bitwise Operators Accessed 2013-01-15.
  5. ^ sourcefrog : Tom Lord on Subversion
  6. ^ Title bar customization - Windows apps | Microsoft Learn