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 – Java GUI

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
Fugiczek
Tvůrce
Avatar
Fugiczek:27.3.2013 21:24

Mam k tomu 2 vyhrady.

  1. Proc tu vysvetlujes slozity GridBagLayout, ktery ma o hodne vic vlastnosti nez jsi pouzil ty a obsahuje vetsi problematiku. Navic jsi pouzil vlastnosti, ktere jsou i u GridLayout (rozestoupeni tam nastavis uz v kontruktoru a nemusis urcovat pozici x a y, proste to zadas poporade) a pro zacatecniky je mnohem lepsi k pochopeni.
  2. Osetrovat deleni nulou vyjimkou je pekna prasarna. Vyjimky jsou hlavne dobre kdyz program ladis. Vetsina vyjimek se pak osetruje ifama protoze vyjimky celkem brutalne zpomaluji beh aplikace, i kdyz tady to moc nepoznas.
 
Odpovedať
27.3.2013 21:24
Avatar
Samik11
Tvůrce
Avatar
Odpovedá na Fugiczek
Samik11:27.3.2013 21:47

Určení souřadnic je univerzální. Co pokud bys chtěl například tři řádky vynechat? Na výjimce jsem chtěl ukázat, že catch blok se provede při jakékoliv chybě. :)

Odpovedať
27.3.2013 21:47
„Radost vidět a rozumět, to je nejkrásnější dar přírody.“ Albert Einstein
Avatar
Fugiczek
Tvůrce
Avatar
Odpovedá na Samik11
Fugiczek:27.3.2013 22:17

Tak to logicky rozdelim na vice casti, nebo druha varianta je to vyplnit prazdnym JLabelem. Jde o to ze na tuto ukazku staci GridLayout, ktery bude vypadat uplne stejne stejne. GridBagLayout je overkill ktery zmate akorat zacatecniky. Toto je myslim serial o GUI ne o vyjimkach. Pokud ji chces tak moc pouzivat tak aspon nepouzivej vseobecnou vyjimku ale vyjimku ktera se pro to nejvice hodi, zde je to ArithmeticExcep­tion. Takhle jde akorat videt ze tomu jazyku vubec nerozumis a nevis kdy je co vhodne pouzit...

 
Odpovedať
27.3.2013 22:17
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na Fugiczek
David Hartinger:28.3.2013 7:07

"Osetrovat deleni nulou vyjimkou je pekna prasarna" - Na to jsi přišel jak? Přesně k tomu výjimky jsou. Proč bys odchytával výjimky, když program ladíš? To je chceš přeci naopak nechat, abys viděl, kde je chyba. Odchytneš je uživateli, aby mu aplikace nespadla. To, co jsi uvedl s tou podmínkou, je tzv. aktivní ošetření chyb, moc se to nepoužívá, protože výjimky jsou jediná správná cesta, jak s chybovými stavy aplikace pracovat.

Editované 28.3.2013 7:08
Odpovedať
28.3.2013 7:07
New kid back on the block with a R.I.P
Avatar
Odpovedá na Fugiczek
Luboš Běhounek Satik:28.3.2013 9:23

Nevidim zadny duvod, proc by tu ta vyjimka byt nemohla nebo nemela, sice je vyhozeni vyjimky o nekolik radu pomalejsi nez hola podminka, ale zrovna u kalkulacky to asi nikoho moc netizi.
Vyjimkam bych se vyhnul az kdyz jde o nejaky kod, ktery musi bezet rychle a spousti se vicekrat za vterinu.

Zrovna deleni nulou je klasicky pripad na pouziti vyjimky, sice tady v tom programu muze chyba nastat jen pri deleni nulou, ale je to uz aspon hezky pripraveno treba pro pridani dalsich matematickych funkci, jako jsou tangens apod, ktere mohou vyhodit chybu s nekterymi parametry, pak bys musel osetrovat kazdy pripad rucne, na to je mnohem lepsi vyjimka (jak uz jsem psal vyse - pokud to neni casove kriticke, pak by se vyplatilo udelat optimalizaci a misto obecne chyby resit kazdy pripad podminkou a zvlast).

Editované 28.3.2013 9:25
Odpovedať
28.3.2013 9:23
https://www.facebook.com/peasantsandcastles/
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovedá na Luboš Běhounek Satik
Lukáš Hruda:28.3.2013 11:05

V něčem máš pravdu. Na druhou stranu si ale myslím, že u chyb tohoto typu, je lepší jim předcházet, než je řešit až když nastanou, respektive zařídit, aby se nulou vůbec dělit nedalo a pak by ta metoda vrátila třeba řetězec "Nulou nelze dělit!". Zase ale, pokud není třeba zjistit v čem přesně chyba nastala, pak je lepší výjimka, protože když nastane chyba někde jinde, výjimka to zachytí. Takže si myslím, že správně je oboje. Co se mi spíš nelíbí, je docela dost dlouhý kus kódu v bloku try, dal bych to do nějaké privátní metody.

 
Odpovedať
28.3.2013 11:05
Avatar
Kit
Tvůrce
Avatar
Odpovedá na Lukáš Hruda
Kit:28.3.2013 16:51

Výjimky byly v objektových jazycích zavedeny proto, aby se používaly. Testovat dělitele na nulu před vlastním dělením je hloupost, která se může vymstít například při vícevláknovém zpracování. Výjimka je v daném případě rychlejší, než vytváření zbytečných kritických sekcí.

Odpovedať
28.3.2013 16:51
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovedá na Kit
Lukáš Hruda:28.3.2013 17:01

To ale nemění nic na tom, že ten kód v té výjimce je delší než by musel :)

 
Odpovedať
28.3.2013 17:01
Avatar
Odpovedá na Kit
Luboš Běhounek Satik:28.3.2013 18:05

"Testovat dělitele na nulu před vlastním dělením je hloupost, která se může vymstít například při vícevláknovém zpracování. Výjimka je v daném případě rychlejší, než vytváření zbytečných kritických sekcí."

Naprosto chybné.
Teď jsem to schválně testoval, výjimek za sekundu se stihlo provést asi 280 (!), zatímco přístupů k proměnné v kritické sekci ze dvou vláken cca 40 000 000.

Odpovedať
28.3.2013 18:05
https://www.facebook.com/peasantsandcastles/
Avatar
Kit
Tvůrce
Avatar
Odpovedá na Luboš Běhounek Satik
Kit:29.3.2013 17:07

To si schválně zkusím udělat také, protože ten tvůj výsledek vypadá velmi podivně. 280 výjimek za sekundu je hrozně málo. Jako kdybys to honil přes GUI.

Odpovedať
29.3.2013 17:07
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
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ý!