Butonul magic

Un  buton magic este un model anti - care apare atunci când există o lipsă de abstractizare, când multe acțiuni diferite sunt adunate în locul greșit, de exemplu, într-un handler de clic pe buton, în loc să fie distribuite între clasele și funcțiile corespunzătoare. De obicei, problema apare în mediile de dezvoltare vizuală [1] [2] când programatorul desenează mai întâi interfața cu utilizatorul și apoi scrie logica de afaceri în metode generate automat , de obicei o metodă de gestionare a clicurilor pe buton, cum ar fi „OK” [3] .

Probleme cu acest antimodel:

Uneori, anti-modele similare apar și în codul de pe partea serverului, cum ar fi în ASP.NET Web Forms [5] .

Exemplu prost (Borland Delphi)

procedura TForm1 . Button1Click ( Expeditor : TObject ) ; varreg : TRegistry ; _ începe reg := TRegistry . a crea ; încercați reg . RootKey := HKey_Current_User ; dacă reg . OpenKey ( 'SoftwareMyCompany' , true ) apoi începe reg . WriteString ( 'Filename' , Edit1 . Text ) ; sfârşitul ; in sfarsit reg . Gratuit ; sfârşitul ; sfârşitul ;

Exemplu bun (Borland Delphi)

În acest caz, ar fi mai bine să refactorizezi logica de afaceri (în acest exemplu, stocarea numelui fișierului în registry) într-o clasă separată.

tip TPreferences = class private FFilename : String ; procedura SetFilename ( const Value : String ) ; proprietate publică Nume Fișier : șir citire NumeFișier scrie NumeFișier Set ; procedura Încărcare ; procedura Salvare ; sfârşitul ;

Și utilizați metoda „Salvare” a acestei clase din handlerul de clic pe buton:

procedura TForm1 . Button1Click ( Expeditor : TObject ) ; începe Preferințe . salvare ; sfârşitul ; procedura TForm1 . Edit1Change ( Expeditor : TObject ) ; începe Preferințe . Nume fișier := Editare1 . text ; sfârşitul ;

Acum această problemă a devenit relevantă în Visual C# ( Microsoft Visual Studio ) [4] .

Note

  1. AntiPattern (de Indranil Nandy, IIT Kharagpur  ) . Preluat la 2 octombrie 2017. Arhivat din original la 5 martie 2016.
  2. Anders Toxboe. Interfață utilizator Anti-  Patterns . UI Patterns (5 februarie 2009). Preluat la 11 septembrie 2013. Arhivat din original la 18 august 2013.
  3. 1 2 George Stepanek. Secrete de programare software: de ce proiectele eșuează  14. Arhivat din original pe 12 martie 2016.
  4. 1 2 Ce să nu faci: Anti-Patterns and the Solutions  ( 26 aprilie 2011). Arhivat din original pe 6 septembrie 2013.
  5. Enterprise Integration Anti-Patterns #2 - Ansambluri partajate  (link inaccesibil)

Literatură

  • Bruce A. Tate, Bitter Java. ISBN 193011043X , 2002. „Un antimodel timpuriu: butonul magic” pagina 54