Magiska knappen
En magisk tryckknapp är ett anti - mönster som uppstår när det saknas abstraktion, när många olika åtgärder klumpas ihop på fel ställe, till exempel i en knappklickshanterare, istället för att fördelas mellan lämpliga klasser och funktioner. Vanligtvis uppstår problemet i visuella utvecklingsmiljöer [1] [2] när programmeraren först ritar användargränssnittet och sedan skriver affärslogiken i automatiskt genererade metoder , vanligtvis en knappklickshanteringsmetod som "OK" [3] .
Problem med detta antimönster:
- UI-elementhanterarkod växer okontrollerat [3]
- Att ändra gränssnittet (eller lägga till ett nytt gränssnitt) blir knepigt, till exempel att ta bort en knapp kan innebära att metoder associerade med den tas bort [4]
- Kodtestning blir svårare
- Återanvändning av kod är inte möjlig
Ibland förekommer liknande antimönster även i kod på serversidan, till exempel i ASP.NET Web Forms [5] .
Dåligt exempel (Borland Delphi)
procedur TForm1 . Button1Click ( Avsändare : TObject ) ;
varreg
: TRegistry ; _ börja reg := TRegistry . skapa ; prova reg . RootKey := HKey_Current_User ; om reg . OpenKey ( 'SoftwareMyCompany' , sant ) börjar sedan reg . WriteString ( 'Filnamn' , Redigera1 . Text ) ; slut ; äntligen reg . Gratis ; slut ; slut ;
Bra exempel (Borland Delphi)
I det här fallet skulle det vara bättre att omstrukturera affärslogiken (i det här exemplet lagrar filnamnet i registret) till en separat klass.
typ
TPreferences = class
private
FFilename : String ;
procedure SetFilename ( const Value : String ) ;
public
property Filnamn : String read FFilename write SetFilename ;
procedur Ladda ;
procedur Spara ;
slut ;
Och använd "Spara"-metoden för den här klassen från knappklickshanteraren:
procedur TForm1 . Button1Click ( Avsändare : TObject ) ;
börja
Inställningar . spara ;
slut ;
procedur TForm1 . Edit1Change ( Avsändare : TObject ) ;
börja
Inställningar . Filnamn := Redigera1 . text ;
slut ;
Nu har detta problem blivit aktuellt i Visual C# ( Microsoft Visual Studio ) [4] .
Anteckningar
- ↑ AntiPattern (av Indranil Nandy, IIT Kharagpur ) . Hämtad 2 oktober 2017. Arkiverad från originalet 5 mars 2016.
- ↑ Anders Toxboe. Användargränssnitts antimönster . UI-mönster (5 februari 2009). Hämtad 11 september 2013. Arkiverad från originalet 18 augusti 2013.
- ↑ 1 2 George Stepanek. Software Programming Secrets: Why Projects Fail 14. Arkiverad från originalet den 12 mars 2016.
- ↑ 1 2 Vad man inte ska göra: Anti-Patterns and the Solutions ( 26 april 2011). Arkiverad från originalet den 6 september 2013.
- ↑ Enterprise Integration Anti-Patterns #2 - Delade församlingar (otillgänglig länk)
Litteratur
- Bruce A. Tate, Bitter Java. ISBN 193011043X , 2002. "An early antipattern: The Magic Pushbutton" sida 54