Varázsgomb
A mágikus nyomógomb egy anti - minta , amely akkor jelenik meg, ha hiányzik az absztrakció, amikor sok különböző műveletet rossz helyen, például egy gombkattintáskezelőben egybegyűjtenek, ahelyett, hogy a megfelelő osztályok és függvények között osztanák el. A probléma jellemzően vizuális fejlesztői környezetekben [1] [2] jelentkezik, amikor a programozó először megrajzolja a felhasználói felületet , majd automatikusan generált metódusokban írja meg az üzleti logikát , általában egy gombkattintásos kezelési módszert, például "OK" [3] .
Problémák ezzel az antimintával:
- A felhasználói felület elemkezelő kódja ellenőrizhetetlenül növekszik [3]
- A felhasználói felület megváltoztatása (vagy új felhasználói felület hozzáadása) bonyolulttá válik, például egy gomb eltávolítása a hozzá tartozó módszerek eltávolítását vonhatja maga után [4]
- A kód tesztelése nehezebbé válik
- A kód újrafelhasználása nem lehetséges
Néha hasonló anti-minták a szerveroldali kódokban is előfordulnak, például az ASP.NET Web Forms-ben [5] .
Rossz példa (Borland Delphi)
eljárás TForm1 . Button1Click ( Feladó : TObject ) ;
varreg
: TRegistry ; _ begin reg := TRegistry . létrehozni ; próbáld meg reg . RootKey := HKey_Current_User ; ha reg . OpenKey ( 'SoftwareMyCompany' , igaz ) , majd kezdje el a reg . WriteString ( 'Fájlnév' , Szerk.1 . Szöveg ) ; vége ; végre reg . Ingyenes ; vége ; vége ;
Jó példa (Borland Delphi)
Ebben az esetben jobb, ha az üzleti logikát (ebben a példában a fájlnév tárolása a rendszerleíró adatbázisban) egy külön osztályba alakítja át.
type
TPreferences = class
private
FFilename : String ;
eljárás SetFilename ( const érték : String ) ;
public
property Fájlnév : String read FFilename írás SetFilename ;
eljárás Load ;
eljárás Mentés ;
vége ;
És használja ennek az osztálynak a "Mentés" metódusát a gombkattintáskezelőből:
eljárás TForm1 . Button1Click ( Feladó : TObject ) ;
Kezdje
Beállítások . mentés ;
vége ;
eljárás TForm1 . Edit1Change ( Feladó : TObject ) ;
Kezdje
Beállítások . Fájlnév := Szerkesztés1 . szöveg ;
vége ;
Most ez a probléma aktuálissá vált a Visual C# -ban ( Microsoft Visual Studio ) [4] .
Jegyzetek
- ↑ AntiPattern (Indranil Nandy, IIT Kharagpur ) . Letöltve: 2017. október 2. Az eredetiből archiválva : 2016. március 5..
- ↑ Anders Toxboe. Felhasználói felület anti -minták . UI-minták (2009. február 5.). Letöltve: 2013. szeptember 11. Az eredetiből archiválva : 2013. augusztus 18..
- ↑ 1 2 Stepanek György. Szoftverprogramozási titkok: Miért buknak meg a projektek 14. Az eredetiből archiválva : 2016. március 12.
- ↑ 1 2 Mit ne tegyen: Anti-Patterns and the Solutions ( 2011. április 26.). Az eredetiből archiválva: 2013. szeptember 6.
- ↑ Enterprise Integration Anti-Patterns #2 – Megosztott összeállítások (elérhetetlen hivatkozás)
Irodalom
- Bruce A. Tate, Keserű Java. ISBN 193011043X , 2002. "Egy korai antiminta: A varázslatos nyomógomb" 54. oldal