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" <[email protected]>:
> 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

Odpovedet emailem