UP | HOME
| ../../ | Slides

Anti-Patterns

"An anti-pattern is a common response to a recurring problem that is usually ineffective and risks being highly counterproductive."

1 Examples from non-CS

  1. Bicycle shed: Giving disproportionate weight to trivial issues
  2. Escalation of commitment: Failing to revoke a decision when it proves wrong
  3. Peter Principle: Continually promoting otherwise well-performing employees up to their level of incompetence, where they remain indefinitely
  4. Stovepipe or Silos: An organizational structure of isolated or semi-isolated teams, in which too many communications take place up and down the hierarchy, rather than directly with other teams across the organization
  5. Ninety-ninety rule: Tendency to underestimate the amount of time to complete a project when it is "nearly done"

2 Software engineering

  1. Abstraction inversion: Not exposing implemented functionality required by callers of a function/method/constructor, so that the calling code awkwardly re-implements the same functionality in terms of those calls
  2. Big ball of mud: A system with no recognizable structure.
  3. Input kludge: Failing to specify and implement the handling of possibly invalid input
  4. Call super: Requiring subclasses to call a superclass's overridden method
  5. God object: Concentrating too many functions in a single part of the design (class)
  6. Sequential coupling: A class that requires its methods to be called in a particular order. (?)
  7. Poltergeists: Objects whose sole purpose is to pass information to another object
  8. Boat anchor: Retaining a part of a system that no longer has any use
  9. Error hiding: Catching an error message before it can be shown to the user and either showing nothing or showing a meaningless message. Also can refer to erasing the Stack trace during exception handling, which can hamper debugging.
  10. Lasagna code: Programs whose structure consists of too many layers.

3 References

  1. https://en.wikipedia.org/wiki/Anti-pattern A few selected items are given above. Software Engineering section: Required Reading.
  2. https://sourcemaking.com/ has most of the above materials presented well.

Copyright © 2015 www.wright.edu/~pmateti