Návrhové vzory 2019

Situace:

  • za X let máte X projektů. Dlouhodobě používáme Ionic, máme verzi 1, 3 a 4
  • každý programátor má svůj styl, jednota není dostatečná. Ale není to bolestivé, jde o kosmetiku, věci fungují a dá se v nich vyznat
  • vedou se diskuze, co je lepší a proč, trpí ega vývojářů
  • proces codereview přispěl k zvýšení kvality. Chybí pravidla podle kterých by se věci pri codereview posuzovaly
  • standard má přinést technologický pokrok. Ale ne dogma, aby zastavil rozvoj.

Pro začátek vezmeme nejčastější funkce:

1. načtení seznamu produktů

  • obrazovka se seznamem, produkt má obrázek, titulek, popis a cenu - řeší šablona .html
  • další vrstva je controller .ts
  • další vrstva je service .ts
  • data se berou z REST API

Vyřešit:

  • na úrovni controlleru použít await nebo observable.subscribe - jaké jsou v tom praktické rozdíly, kdy použít který přístup?

2. ošetření chyb z API

  • chyba 500, na kterou se reaguje zobrazením hlášky uživateli
  • chyba 403, když např. vypršel token, chyba se řeší interně, bez interakce s uživatelem

Vyřešit:

  • jak předávat chyby ze service do controlleru
  • jak řešit obnovení tokenu

3. activity indikátor, točící kolečko

  • pokud volám server a blokuju tím uživatele v činnosti, potřebuji zobrazit informaci v UI, např. activity indikátorem

Vyřešit:

  • kde indikátor zobrazovat
  • kde a kdy indikátor skrýt
  • vzít v potaz ošetření chyb

4. podpora offline

  • mobilní aplikace může fungovat bez připojení k internetu
  • pokud jsem offline, zobrazím data z local storage
  • pokud se připojím, měl bych si je obnovit

Vyřešit:

  • řeší se na úrovni service?
  • jak informovat, že už jsem online?
  • je možné zobrazit nejprve data z local storage, potom poslat požadavek na server a když data dostanu, udělat refresh - aplikace CNG

5. zobrazení dummy obsahu

  • některé pokrokové aplikace, např. facebook zobrazují šedý prázdný obsah do doby než se načtou reálná data
  • je to lepší řešení než zobrazit prázdnou stránku nebo čekat na načtení a pak zobrazit všechno

Vyřešit:

  • koncept, jak to řešit na všech vrstvách

Další body:

6. zobrazení dlouhého seznamu a postupné načítání
7. zobrazení detailu
8. uložení detailu
9. smazání detailu
10. výpočet, úprava dat ze serveru před zobrazení, např. jiné pojmenování atributů (vyuka:jmeno -> jmeno)
11. filtrování
12. řazení
13. vyhledávání
14. generování kódu ze swaggeru

Není-li uvedeno jinak, obsah této stránky je pod licencí Creative Commons Attribution-ShareAlike 3.0 License