1 / 22

Anti-patterns alebo ako to nerobiť

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

dian
Download Presentation

Anti-patterns alebo ako to nerobiť

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Anti-patternsalebo ako to nerobiť Miroslav Sajko

  2. Antipatterns • Autor: AndrewKoenig, 1995 • Rozšírenie až v 1998 vďaka knihe AntiPatterns 4 autorov, ktorí dostali prezývku TheUpstart 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

  3. 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

  4. Príčiny • 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)

  5. 1. Zhon • Obeťou je testovanie

  6. 2. Apatia • Nestaranie sa o riešenie známych problémov

  7. 3. Úzke zmýšľanie • Odmietanie praktických riešení, ktoré sú známe ako efektívne

  8. 4. Lenivosť • Ľahká odpoveď = dobrá odpoveď

  9. 5. Lakomosť • Zbytočná komplexnosť projektov

  10. 6. Ignorácia • Intelektuálna lenivosť

  11. 7. Pýcha • Znovuobjavovanie kolesa

  12. Project managementantipatterns • Bystanderapathy – 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 • Deathmarch – tlak na zamestnancov kvôli neprimeranému deadlineu projektu • Analysisparalysis – venovanie priveľa úsilia k fáze analýzy projektu

  13. Developmentantipatterns • Functionaldecomposition – procedurálny kód v objektovo-orientovanom jazyku • Boatanchor– (často drahá) časť SW/HW, ktorá nemá užitočné využitie v projekte • Cutand paste programming– kopírovanie zdrojového kódu namiesto black-boxingu • Big ballofmud– systém bez rozpoznateľnej štruktúry • DatabaseasIPC - komunikácia medzi procesmi riešená cez databázu, ak existuje ľahší a vhodnejší spôsob

  14. Godclass • Označovaný aj ako Blob • „Toto je trieda, ktorá je srdcom architektúry“ • Trieda toho robí/vie priveľa • Designy, kde 1 trieda monopolizuje processinga ostatné zapúzdrujú dáta • Takmer procedurálny design • Nevhodné na testovanie a mizerná znovupoužiteľnosť

  15. Lavaflow • Označovaný aj ako Deadcode • „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, ...

  16. Poltergeist • 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

  17. Goldenhammer • „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 chcem svoj produkt použiť všade, kde sa dá (alebo aj nedá)

  18. Spaghetticode • „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

  19. Developmentantipatterns • Inputkludge – neriešenie ošetrenia vstupov • Programming by permutation – hľadanie riešenia takmer náhodným menením kódu • Notinventedheresyndrome – ignorovanie existujúcich riešení)=znovuobjavenie kolesa • Inventedhere – používanie iba vlastných a triviálnych riešení, namiesto inovácie • Reinventingthesquarewheel – neschopnosť použitia jestvujúceho riešenia a používanie vlastného, menej efektívneho riešenia • A mnoho ďalších...

  20. Záver • Šť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. (ElbertHubbard) • Expert je niekto, kto pozná niektoré najhoršie chyby, ktoré sa môžu prihodiť v jeho odbore a vie, ako sa im treba vyhnúť. (WernerKarlHeisenberg)

  21. Zdroje • The "Upstart Gang of Four: AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis (1998) • http://en.wikipedia.org/wiki/Anti-pattern

  22. Ďakujem za pozornosťOtázky? Kontakt: miroslav.sajko@student.upjs.sk

More Related