Antipatrón de diseño
De Wikipedia, la enciclopedia libre
Un antipatrón de diseño es un patrón de diseño que invariablemente conduce a una mala solución para un problema.
Al documentarse los antipatrones, además de los patrones de diseño, se dan argumentos a los diseñadores de sistemas para no escoger malos caminos, partiendo de documentación disponible en lugar de simplemente la intuición.
[editar] Lista alfabética de antipatrones
- Inversión de abstracción (abstraction inversion): abstracción sencilla basada en un mecanismo complejo.
- Complejidad no indispensable (accidental complexity): la solución obtenida es demasiado complicada o compleja para el problema a resolver.
- Punto de vista ambiguo (ambiguous viewpoint): evitar precisar algunos aspectos, postergando así decisiones conflictivas.
- Introducción de dificultad por analogía (analogy breakdown): diseño por analogía con problemas resueltos, posiblemente introduciendo dificultades no inherentes al problema.
- Parálisis analítica (analysis paralysis): el proceso de diseño se eterniza al iterar sobre la búsqueda de mejores soluciones o variantes.
- Comité igualitario nombrado (appointed team): se crea un comité o grupo de trabajo para resolver un problema y no ocuparse de lograr que el grupo funcione.
- Diseñadores empíricos (architects don't code): el grupo de diseño no logra evaluar la complejidad del objeto diseñado.
- Diseño con arquitectura impuesta (architecture as requirements): el diseño incluye obligatoriedad en el uso de herramientas o métodos no necesariamente idóneos.
- Experiencia mata diseño (architecture by implication): descuido del diseño basado en experiencia previa.
- Testing incompleto (asynchronous unit testing): descuido en el testing de algunas unidades en todos los casos o de todas las unidades en algunos casos
- Desarrollo dirigido por herramientas (autogenerated stovepipe): preferir una solución generada automáticamente sobre la mejor solución
- Trampa de osos (bear trap): se invierte fuertemente en una herramienta inadaptada o infactible y salir de ella parece imposible.
- Gran bola de lodo (Big ball of mud): Sistema sin una estructura reconocible.
- Blame storming
- Blowhard Jamboree
- Lazo activo (Busy spin): utilizar espera activa cuando existen alternativas.
- Cargo cult
- Cascading dialog boxes
- Continuous obsolescence
- Control freak
- Corn cob
- Cover your assets
- Creeping featuritis
- Crci cards
- Copy and paste programming
- Dead end
- Death by planning
- Decision by arithmetic
- Design by committee
- Design for the sake of design
- iscordant reward mechanisms
- Egalitarian compensation
- Email is dangerous
- Emperor's new clothes
- Exception funnel
- False economy
- False surrogate endpoint
- Miedo al éxito (fear of success): cuando las únicas razones de que los trabajos no se completen son de índole social.
- Moneda en un punto flotante (Floating point currency): la representación punto flotante se adapta mal para valores que representan dinero.
- Floating point times
- Functional decomposition
- Geographically distributed development
- Give me estimates now
- Golden hammer: para un martillo, todo son clavos.
- Ground hog day project
- Heir apparent
- Hero culture
- Hidden requirements
- Idiot proof process
- If it is working don't change
- Input kludge
- Intellectual violence
- It is an operator problem
- Kill two birds with one stone
- Kitchen sink design
- Lava seca (lava flow): al entregar un componente de software antes de estar completo o completamente probado, sus características, buenas o malas, tienden a quedarse fijas, como río de lava que se seca por fuera.
- Magic container
- Magic pushbutton: tendencia, al desarrollar interfaces, a programar la lógica del negocio en los métodos de interacción.
- Manager controls process
- Mushroom management
- National ism
- Net negative producing programmer
- Not invented here
- Passing nulls to constructors
- Plug compatible interchangeable engineers
- Optimización prematura (premature optimization): sacrificar el diseño por consideraciones de optimización.
- Reinvent the wheel
- Roll your own database
- Requirements tossed over the wall
- Rube goldberg machine
- Scape goat
- Shoot the messenger
- Single function exit point
- Software merger
- Spaghetti code
- Specify nothing
- Stovepipe
- String without length
- Sumo marriage
- Swiss army knife
- The customers are idiots
- The Blod
- The feud
- The grand old Duke of York
- They understood me
- Thrown over the wall
- Tower of voodoo
- Train the trainer
- Vendor lock in
- Viewgraph engineering
- Walking through a mine field
- Warm bodies
- We are idiots
- Wolf ticket
- Yet another meeting will solve it
- Yet another programmer
- Valor por defecto como indefinido (zero means null): ocurre cuando se escoge un valor arbitrario para representar la indefinición sin garantizar que ese valor no puede realmente ocurrir.
- Codificación Brutal: Ocurre cuando los programadores son estrujados para programar sobre una arquitectura sin diseñar y sin requisitos evidentes.
Ova
[editar] Véase también
[editar] Enlaces externos
- C2.com (antipatrones) Portland Pattern Repository's Wiki