Botón mágico

Un  botón mágico es un antipatrón que aparece cuando hay falta de abstracción, cuando muchas acciones diferentes se agrupan en el lugar equivocado, por ejemplo, en un controlador de clic de botón, en lugar de distribuirse entre las clases y funciones apropiadas. Por lo general, el problema ocurre en entornos de desarrollo visual [1] [2] cuando el programador primero dibuja la interfaz de usuario y luego escribe la lógica comercial en métodos generados automáticamente , generalmente un método de manejo de clic de botón como "OK" [3] .

Problemas con este antipatrón:

A veces, también se producen antipatrones similares en el código del lado del servidor, como en ASP.NET Web Forms [5] .

Mal ejemplo (Borland Delphi)

procedimiento TForm1 . Button1Click ( Remitente : TObject ) ; varreg : TRegistro ; _ comenzar registro := TRegistry . crear ; prueba con el registro RootKey := HKey_Current_User ; si reg . OpenKey ( 'SoftwareMyCompany' , true ) y luego comience el registro . WriteString ( 'Nombre de archivo' , Edit1 . Texto ) ; fin ; finalmente Reg . Gratis ; fin ; fin ;

Buen ejemplo (Borland Delphi)

En este caso, sería mejor refactorizar la lógica comercial (en este ejemplo, almacenar el nombre del archivo en el registro) en una clase separada.

tipo TPreferences = class private FFilename : String ; procedimiento SetFilename ( const Value : String ) ; propiedad pública Nombre de archivo : Cadena leer FFilename escribir SetFilename ; Procedimiento Cargar ; procedimiento Guardar ; fin ;

Y use el método "Guardar" de esta clase desde el controlador de clic de botón:

procedimiento TForm1 . Button1Click ( Remitente : TObject ) ; comenzar Preferencias . guardar ; fin ; procedimiento TForm1 . Edit1Change ( Remitente : TObject ) ; comenzar Preferencias . Nombre de archivo := Edit1 . texto ; fin ;

Ahora este problema se ha vuelto relevante en Visual C# ( Microsoft Visual Studio ) [4] .

Notas

  1. AntiPattern (por Indranil Nandy, IIT Kharagpur  ) . Consultado el 2 de octubre de 2017. Archivado desde el original el 5 de marzo de 2016.
  2. Anders Toxboe. Interfaz de usuario Anti-  Patrones . Patrones de interfaz de usuario (5 de febrero de 2009). Consultado el 11 de septiembre de 2013. Archivado desde el original el 18 de agosto de 2013.
  3. 1 2 Jorge Stepanek. Secretos de programación de software: por qué fallan los proyectos  14. Archivado desde el original el 12 de marzo de 2016.
  4. 1 2 Lo que no se debe hacer: antipatrones y soluciones  ( 26 de abril de 2011). Archivado desde el original el 6 de septiembre de 2013.
  5. Antipatrones de integración empresarial n.° 2: ensamblajes compartidos  (enlace inaccesible)

Literatura

  • Bruce A. Tate, Java amarga. ISBN 193011043X , 2002. "Un antipatrón temprano: el botón mágico" página 54