Než byl zaveden assert, používal jsem značky pro preprocesor
// DEBUG {
a
//DEBUG }
abych spoustu testu mel ve vyvojovem prostredi a nemusel je mit taky v
produkcnim.
V produkcnim jsem pak vyhazoval vsechno mezi tema dvema "tagy".

Od doby assertu to neni nutne.

Dne 3. dubna 2011 15:31 "Zdeněk Troníček" <troni...@fit.cvut.cz> napsal(a):

Asi Ti moc nerozumím. To myslíš tak, že budeš na produkci testovat, zda
> nevoláš metodu se špatnými parametry a pokud ano, tak vyhodíš výjimku? To
> mi připadá na stejné úrovni jako chytání ArrayIndexOutOfBoundsException
> pro případ, že bychom použili neplatný index pro přístup k poli.
> Ne že by to nešlo, ale výjimky slouží primárně k ošetření neočekávaných
> (výjimečných) událostí a ne k detekci či řešení chyb programátora.
>
> Jinak assert je dost vidět ve zdrojácích NetBeans.
>
> Z.
> --
> Zdenek Tronicek
> FIT CTU in Prague
>
>
> Ondra Medek napsal(a):
> > No vzhledem k tomu, ze "By default, assertions are disabled at
> > runtime.", tak bych rekl, ze ten Java "assert" slouzi spise pro
> > debugovani a testovani. Vsude, kde chceme mit kontroly i na produkci,
> > tak musime pouzit vlastni kod if ... throw. Tedy IMHO assert muze
> > obsahovat i narocny kod (prochazeni pole, alokace pameti).
> >
> > Podole mne bylo asi zamyslene pouziti "assert" takove, za na produkci
> > jsou vyple. Kdyz se treba narazi na divny problem, tak se muze spustit
> > aplikace s -ea a treba assert zafunguje a problem odhali. Ale
> > java.logging a podobne resi stejnou vec elegatneji.
> >
> > Je vubec nejaky znamy open source Java projekt, ktery by "assert"
> > pouzival?
> >
> >
> >
> > 2011/4/1 "Zdeněk Troníček" <troni...@fit.cvut.cz>:
> >> Nejde ani tak o viditelnost metody, ale o to, zda je metoda součástí
> >> API.
> >> Klíčové slovo assert kontroluje podmínku, o které je programátor
> >> přesvědčen, že platí. Motivací pro používání assert je snaha dozvědět se
> >> co nejdříve o tom, že je něco špatně. Použití má smysl tam, kde sám píšu
> >> metodu i volání (nebo já píšu metodu a kolega z týmu volání).
> >> Naproti tomu výjimka IllegalArgumentException slouží k informování
> >> volájícího, že zavolal metodu s nesprávnými argumenty. Hodí se tam, kde
> >> jde o metodu API, které bude přístupné někomu z vnějšku (tj. mimo
> >> systém).
> >>
> >> Z.T.
> >> --
> >> Zdenek Tronicek
> >> FIT CTU in Prague
> >>
> >>
> >> Ondra Medek napsal(a):
> >>>> Aserce kontroluji, zda modul dostava spravne vstupy a jeho stav je
> >>>> korektni. Je to takova velmi omezena varianta Design by Contract.
> >>>> Nemely by se pouzivat na overovani vstupu od uzivatele, jen na obranu
> >>>> pred programatorskymi chybami.
> >>>> Typicke pouziti:
> >>>> Scitac je napsan jen pro nezaporna cisla. To je popsano v dokumentaci.
> >>>> Na jeho zacatku se assertem overi, ze cisla skutecne nejsou zaporna.
> >>>> Pokud by ho nejaky programator pouzil spatne, brzy se to dozvi.
> >>>> (Otazkou je, zda trebas tady radeji nepouzit InvalidArgumentException,
> >>>> hranice je neostra.)
> >>>
> >>> Java assert se nema pouzivat na kontrolu parametru public metod, viz
> >>>
> http://download.oracle.com/javase/1.4.2/docs/guide/lang/assert.html#usage-conditions
> >>> Asi protoze ten assert se ma na produkci vypinat.
> >>>
> >>> Misto toho treba Spring ma Assert tridu:
> >>>
> http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/util/Assert.html
> >>> (A ja si taky kdysi jednu vyrobil:
> >>>
> http://xmedeko.blogspot.com/2010/12/java-simple-assert-class-for-design-by.html
> )
> >>>
> >>
> >>
> >
> >
> >
> > --
> > Ondra Medek
> >
>
>


-- 
Oto 'tapik' Buchta, ta...@buchtovi.cz, http://tapikuv.blogspot.com



-- 
Oto 'tapik' Buchta, ta...@buchtovi.cz, http://tapikuv.blogspot.com

Odpovedet emailem