anti-patterns alebo ako to nerobiť

22
Anti-patterns alebo ako to nerobiť Miroslav Sajko

Upload: dian

Post on 24-Feb-2016

59 views

Category:

Documents


0 download

DESCRIPTION

Anti-patterns alebo ako to nerobiť. Miroslav Sajko. Antipatterns. Autor: Andrew Koenig , 1995 Rozšírenie až v 1998 vďaka knihe AntiPatterns 4 autorov, ktorí dostali prezývku The Upstart Gang of Four - PowerPoint PPT Presentation

TRANSCRIPT

Anti-patternsalebo ako to nerobiť

Miroslav Sajko

Autor: Andrew Koenig, 1995 Rozšírenie až v 1998 vďaka knihe

AntiPatterns 4 autorov, ktorí dostali prezývku The Upstart Gang of Four

Vzor riešenia, ktorý je bežne používaný, avšak jeho dôsledkami sú neefektivita alebo praktická kontraproduktívnosť

Nie každý zlozvyk je antipattern

Antipatterns

Antipattern je antipattern, akk:- na prvý pohľad vzorové riešenie má viac negatívnych ako pozitívnych dopadov- existuje známy vhodnejší vzor riešenia

Pattern = opakujúce sa riešenie Antipattern = opakujúci sa problém Softwarové inžinierstvo, biznis operácie

(projektový manažment), sociálne interakcie

Antipatterns

Prirovnanie k 7 smrteľným hriechom Zhon (haste) Apatia (apathy) Úzke zmýšľanie (narrow-mindedness) Lenivosť (sloth) Lakomosť (avarice) Ignorácia (ignorance) Pýcha (pride)

Príčiny

Obeťou je testovanie

1. Zhon

Nestaranie sa o riešenie známych problémov

2. Apatia

Odmietanie praktických riešení, ktoré sú známe ako efektívne

3. Úzke zmýšľanie

Ľahká odpoveď = dobrá odpoveď

4. Lenivosť

Zbytočná komplexnosť projektov

5. Lakomosť

Intelektuálna lenivosť

6. Ignorácia

Znovuobjavovanie kolesa

7. Pýcha

Bystander apathy – vidím chybu, ale neupozorním na ňu, pretože sa ma netýka

Smoke and mirrors – demonštrovanie produktu, ktorý ešte neexistuje

Overengineering - utrácanie zdrojov na zbytočné zkomplexnenie projektu

Death march – tlak na zamestnancov kvôli neprimeranému deadlineu projektu

Analysis paralysis – venovanie priveľa úsilia k fáze analýzy projektu

Project management antipatterns

Functional decomposition – procedurálny kód v objektovo-orientovanom jazyku

Boat anchor – (často drahá) časť SW/HW, ktorá nemá užitočné využitie v projekte

Cut and paste programming – kopírovanie zdrojového kódu namiesto black-boxingu

Big ball of mud – systém bez rozpoznateľnej štruktúry

Database as IPC - komunikácia medzi procesmi riešená cez databázu, ak existuje ľahší a vhodnejší spôsob

Development antipatterns

Označovaný aj ako Blob „Toto je trieda, ktorá je srdcom architektúry“

God class

Trieda toho robí/vie priveľa Designy, kde 1 trieda

monopolizuje processing a ostatné zapúzdrujú dáta

Takmer procedurálny design Nevhodné na testovanie a

mizerná znovupoužiteľnosť

Označovaný aj ako Dead code „Myslím, že sa to nikde

nepoužíva, ale istý si niesom, tak to tam radšej nechám“

Fragmenty kódu, ktorých funkcionalita a využívanosť v systéme nie je jasná

Časté v systémoch, kde research kód skončil v produkčnom kóde

Mŕtvy kód, haldy zakomentovaného kódu, slabo dokumentovaný kód, ...

Lava flow

Označovaný aj ako cigán „Neviem, čo táto trieda robí, ale

určite je dôležitá“ Triedy s obmedzenou zodpovednosťou a

rolou v systéme, ich efektívny životný cyklus je krátky

Väčšinou sú to triedy, ktoré sa na chvíľu zjavia, aby vyvolali ďalšiu činnosť a následne hneď aj zaniknú

Bezstavové triedy, objekty s krátkou životnosťou

Poltergeist

„Mám kladivo a všetko, čo vidím je klinec“ Zrejme najbežnejší antipattern Nevhodné používanie obľúbeného nástroja Rovnaké nástroje sú používané na širokú

paletu konceptuálne odlišných produktov Pri konzultácii so zákazníkom o novom

produkte odkláňanie požiadaviek smerom k už existujúcemu produktu

Po vysokých investíciách chcemsvoj produkt použiť všade, kde sa dá (alebo aj nedá)

Golden hammer

„Uvedomuješ si, že tento jazyk podporuje viac ako jednu metódu/funkciu?“

Zrejme najznámejší antipattern Systém, ktorý má veľmi slabú štruktúru Minimálne vzťahy medzi objektami Metódy sú procesne orientované, aj

objekty sa stávajú procesmi Vzor použitia objektov je predvídateľný Minimálna až nulová znovupoužiteľnosť Príčiny: neskúsenosť, žiadny mentoring,

žiadny design pred implementáciou

Spaghetti code

Input kludge – neriešenie ošetrenia vstupov Programming by permutation – hľadanie

riešenia takmer náhodným menením kódu Not invented here syndrome – ignorovanie

existujúcich riešení)=znovuobjavenie kolesa Invented here – používanie iba vlastných a

triviálnych riešení, namiesto inovácie Reinventing the square wheel – neschopnosť

použitia jestvujúceho riešenia a používanie vlastného, menej efektívneho riešenia

A mnoho ďalších...

Development antipatterns

Šťastný je človek, ktorého varuje cudzia chyba. (Jan Amos Komenský)

Najväčšia chyba, ktorú môžete v živote urobiť, je stále mať strach, že nejakú urobíte. (Elbert Hubbard)

Expert je niekto, kto pozná niektoré najhoršie chyby, ktoré sa môžu prihodiť v jeho odbore a vie, ako sa im treba vyhnúť. (Werner Karl Heisenberg)

Záver

The "Upstart Gang of Four: AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis (1998)

http://en.wikipedia.org/wiki/Anti-pattern

Zdroje

Ďakujem za pozornosťOtázky?

Kontakt: [email protected]