Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

Diskusia – 8. diel - Programovanie databázového Wrappera v Jave - Dokončenie

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:3.5.2014 11:07

Hezký seriál, příjemně jsi mě překvapil. Co se týče vylepšení, tak bych určitě pracoval s Connection, Statementy a ResultSety jen v bloku TWR. Na desktopu je to jedno, ale na webu, kde vytvoříš při každém dotazu nové spojení, by došlo rychle k zahlcení poolu. S ResultSetem to bude komplikovanější, musel bys data asi vracet jen v nějakém poli.

Odpovedať
3.5.2014 11:07
New kid back on the block with a R.I.P
Avatar
coells
Tvůrce
Avatar
coells:3.5.2014 13:25

Navrhovat API je vždycky poměrně složitá záležitost a bývá to náročné i pro zkušené programátory. Na začátečníka tvůj wrapper není až tak špatný. Ale pokud budu realista a představím si, že bych měl tvůj wrapper denně používat, je to hrůza. Jenže jak to opravit?

Když navrhuješ API, vždy se musíš snažit dodržet následující koncepty

  • konzistence
  • bezpečnost použití
  • jednoduchost

Aby to bylo složitější, tyhle koncepty jdou proti sobě.
Jednoduchost většinou narušuje konzistenci a bezpečnost.
Konzistence a bezpečnost použití zase vedou ke složitějšímu API.

Kde tvůj wrapper porušuje jednotlivé principy?

  • konzistence - metody select, update, delete se drží SQL, zatímco save nahrazuje insert - to je matoucí
  • konzistence - update vyžaduje WHERE, select zase celé QUERY, delete nechce nic
  • konzistence - návratové hodnoty jsou jeden velký nepořádek - jaký je rozdíl mezi hodnototu ze save, update, delete? navíc metoda delete() vrací void?
  • bezpečnost - míchat sémantiku různých hodnot do proměnného počtu parametrů... to se nedělá - co když napíšu database.dele­te("programato­ri", "id <> ?", null, 5) - taková bota se stane snadno, ještě častěji to uděláš u updatu a data jsou ... víš kde
  • bezpečnost - metoda delete() je chyba, chyba, chyba - jak často chceš vymazat celou tabulku?
  • jednoduchost - z celého kódu je vidět, že ses snažil mít co nejjednodušší API, jenže paradoxně jsi jednoduchost pokazil, protože čitelnost není zrovna nejlepší

Jednoduché API musí být snadné nejen pro zápis, ale také pro čtení. Co dělá metoda x.save("a", "b"), co dělá metoda x.update("a", "jmeno = ? or id="?", "c", 1, "d", 1)? Kód musí být čitelný i 10 minut poté, co jsi ho napsal.

Co bys měl udělat pro nápravu takových chyb? Vezmi kód z main metody a snaž se ho upravit do co nejlepší podoby, musí být z kódu vidět, co dělá, musí být těžké si překlepem vymazat obsah databáze, musí být snadné takový kód napsat. Někdy to trvá celou řadu iterací, než se dostaneš ke slušnému výsledku. No a pak podle toho uprav celé API.

 
Odpovedať
3.5.2014 13:25
Avatar
ondrejbenes
Člen
Avatar
Odpovedá na David Hartinger
ondrejbenes:15.1.2016 12:28

Existuje tedy nějaké jednoduché řešení jak API upravit aby nedošlo k zahlcení poolu při běhu aplikace na webu?

 
Odpovedať
15.1.2016 12:28
Avatar
Zdeněk Zemek:25.1.2017 11:32

hmmm tak to je dobrý, až na konci se vlastně z komentářů dozvím, že API není nic moc a nemám si z něj moc brát příklad :-). Některý věci jsem si taky upravoval už za běhu, např. pomocná metoda FROM, která chybí. HOdně se mi líbí co napsal Coell - pro začínající programátory jako jsem já, by tu měl být vůbec popis jaký princip při tvorbě API použít. Kod zde by měl být navíc napsán dobře a bez chyb :-(((, ale zase nás to nutí přemýšlet aspoň...vono to taky má svoje :D

 
Odpovedať
25.1.2017 11:32
Avatar
dfdfdf
Člen
Avatar
dfdfdf:6.6.2018 12:15

Dobry den, prosim vas mohl by nekdo vysvetlit, jak vytvorit prikaz "SELECT * FROM PROGRAMATORI". Diky
Numuzu pochopit ,kde mam chybu.

Editované 6.6.2018 12:17
 
Odpovedať
6.6.2018 12:15
Avatar
František Trojan:4.5.2021 0:40

Tak jsem si koupil test na konci tohoto kurzu a byl jsem nemile překvapen, že se vůbec netýkal tématu. Otázky byly vesměs na Derby DB, která se zde vůbec neřešila. Koukněte se na to pánové a opravte to. Podle výsledků testů jsem byl asi jediný, kdo ho zkusil.

 
Odpovedať
4.5.2021 0:40
Avatar
Jan Křížek:2.11.2021 15:47

Ten konečný test opravdu nemá nic společného s tímto kurzem.
Bylo by vážně skvělé to opravit.
Díky

 
Odpovedať
2.11.2021 15:47
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!