Kouzelné tlačítko
Magické tlačítko je anti - vzor , který se objeví, když chybí abstrakce, když je mnoho různých akcí soustředěno na nesprávném místě, například v ovladači kliknutí na tlačítko, místo toho, aby byly rozděleny mezi příslušné třídy a funkce. Problém se obvykle vyskytuje ve vizuálních vývojových prostředích [1] [2] , když programátor nejprve nakreslí uživatelské rozhraní a poté zapíše obchodní logiku v automaticky generovaných metodách , obvykle metodou manipulace s kliknutím na tlačítko, jako je "OK" [3] .
Problémy s tímto antivzorem:
- Kód obslužného programu prvků uživatelského rozhraní nekontrolovatelně roste [3]
- Změna uživatelského rozhraní (nebo přidání nového uživatelského rozhraní) se stává složitou, například odstranění tlačítka může znamenat odstranění metod s ním spojených [4]
- Testování kódu se stává obtížnějším
- Opětovné použití kódu není možné
Někdy se podobné anti-vzory vyskytují také v kódu na straně serveru, například ve webových formulářích ASP.NET [5] .
Špatný příklad (Borland Delphi)
postup TForm1 . Button1Click ( Sender : TObject ) ;
varreg
: TRegistry ; _ begin reg := TRregistry . vytvořit ; zkuste reg . RootKey := HKey_Current_User ; pokud reg . OpenKey ( 'SoftwareMyCompany' , true ) a poté začít reg . WriteString ( 'Název souboru' , Upravit1 . Text ) ; konec ; konečně reg . zdarma ; konec ; konec ;
Dobrý příklad (Borland Delphi)
V tomto případě by bylo lepší refaktorovat obchodní logiku (v tomto příkladu uložení názvu souboru do registru) do samostatné třídy.
type
TPreferences = class
private
FFilename : String ;
procedura SetFilename ( const Value : String ) ;
public
property Filename : String read FFilename write SetFilename ;
postup Načíst ;
postup Uložit ;
konec ;
A použijte metodu "Uložit" této třídy z obslužného programu kliknutí na tlačítko:
postup TForm1 . Button1Click ( Sender : TObject ) ;
začít
Předvolby . uložit ;
konec ;
postup TForm1 . Edit1Change ( Sender : TObject ) ;
začít
Předvolby . Název souboru := Edit1 . text ;
konec ;
Nyní se tento problém stal aktuálním ve Visual C# ( Microsoft Visual Studio ) [4] .
Poznámky
- ↑ AntiPattern (od Indranil Nandy, IIT Kharagpur ) . Získáno 2. října 2017. Archivováno z originálu 5. března 2016.
- ↑ Anders Toxboe. Anti- vzory uživatelského rozhraní . Vzory uživatelského rozhraní (5. února 2009). Získáno 11. září 2013. Archivováno z originálu 18. srpna 2013.
- ↑ 1 2 Jiří Štěpánek. Tajemství softwarového programování: Proč projekty selhávají 14. Archivováno z originálu 12. března 2016.
- ↑ 1 2 Co nedělat: Anti-Patterns and the Solutions ( 26. dubna 2011). Archivováno z originálu 6. září 2013.
- ↑ Anti-Patterns Enterprise Integration #2 – Sdílená sestavení (nepřístupný odkaz)
Literatura
- Bruce A. Tate, Hořká Jáva. ISBN 193011043X , 2002. „Starý antipattern: The Magic Pushbutton“ strana 54