Magisk knap
En magisk trykknap er et anti - mønster , der opstår, når der mangler abstraktion, når mange forskellige handlinger er klumpet sammen på det forkerte sted, for eksempel i en knap-klik-handler, i stedet for at blive fordelt på de relevante klasser og funktioner. Typisk opstår problemet i visuelle udviklingsmiljøer [1] [2] , når programmøren først tegner brugergrænsefladen og derefter skriver forretningslogikken i autogenererede metoder , normalt en knap-klik-håndteringsmetode som "OK" [3] .
Problemer med dette antimønster:
- UI-elementhåndteringskode vokser ukontrolleret [3]
- Ændring af brugergrænsefladen (eller tilføjelse af en ny brugergrænseflade) bliver vanskelig, for eksempel kan fjernelse af en knap indebære fjernelse af metoder forbundet med den [4]
- Kodetest bliver sværere
- Genbrug af kode er ikke muligt
Nogle gange forekommer lignende anti-mønstre også i kode på serversiden, såsom i ASP.NET Web Forms [5] .
Dårligt eksempel (Borland Delphi)
procedure TForm1 . Button1Click ( Afsender : TObject ) ;
varreg
: TRegistry ; _ start reg := TRegistry . skabe ; prøv reg . RootKey := HKey_Current_User ; hvis reg . OpenKey ( 'SoftwareMyCompany' , sand ) og start derefter reg . WriteString ( 'Filnavn' , Rediger1 . Tekst ) ; ende ; endelig reg . Gratis ; ende ; ende ;
Godt eksempel (Borland Delphi)
I dette tilfælde ville det være bedre at omstrukturere forretningslogikken (i dette eksempel lagring af filnavnet i registreringsdatabasen) i en separat klasse.
type
TPreferences = class
private
FFilename : String ;
procedure SetFilename ( const Value : String ) ;
public
property Filnavn : Streng læs FFilename skriv SetFilename ;
procedure Load ;
procedure Gem ;
ende ;
Og brug "Gem"-metoden for denne klasse fra knap-klik-handleren:
procedure TForm1 . Button1Click ( Afsender : TObject ) ;
begynde
præferencer . gemme ;
ende ;
procedure TForm1 . Edit1Change ( Afsender : TObject ) ;
begynde
præferencer . Filnavn := Rediger1 . tekst ;
ende ;
Nu er dette problem blevet relevant i Visual C# ( Microsoft Visual Studio ) [4] .
Noter
- ↑ AntiPattern (af Indranil Nandy, IIT Kharagpur ) . Hentet 2. oktober 2017. Arkiveret fra originalen 5. marts 2016.
- ↑ Anders Toxboe. Brugergrænseflade Anti- mønstre . UI-mønstre (5. februar 2009). Hentet 11. september 2013. Arkiveret fra originalen 18. august 2013.
- ↑ 1 2 George Stepanek. Software Programmering Secrets: Why Projects Fail 14. Arkiveret fra originalen den 12. marts 2016.
- ↑ 1 2 Hvad skal man ikke gøre: Anti-Patterns and the Solutions ( 26. april 2011). Arkiveret fra originalen den 6. september 2013.
- ↑ Enterprise Integration Anti-Patterns #2 - Shared Assemblys (utilgængeligt link)
Litteratur
- Bruce A. Tate, Bitter Java. ISBN 193011043X , 2002. "An early antipattern: The Magic Pushbutton" side 54