Assertions, takové malé připomenutí
Když byly v Jave 1.4 představeny Assertions, tak kde kdo asi očekával, že se klíčové slovo assert stane běžnou součástí zdrojových kódů. Nevím jak vy, ale jak pátrám v paměti, tak jsem snad assert nepoužil. Můžete namítnout, že to vůbec nic neznamená, ale co hůř, já jsem použití assert snad ani neviděl ve zdrojácích open source knihoven.
Je to skutečně s podivem, protože assert má svůj význam, minimálně namísto komentářů "sem to nikdy nedojde". Jako vysvětlení toho, že se nám javistům assert nikdy nedostalo pod kůži mám tři důvody.
Marketing
Přišlo mi, že kolem Javy 5, 6, 7 byl docela velký humbuk. Na člověka se valila spousta informací co v dané verzi bude a co nebude a vedly se učené dišputace proč tato vlastnost ano či ne. Sun trochu odfláknul propagaci, myslím že kdyby na nás z každého zdrojáku v tutoriálech Sunu koukal assert, tak tu nemám teď psát.
Vymahatelnost
Velkou nevýhodou použití assert spatřuji v tom, že jej sice máte v kódu, ale pro jeho zapnutí potřebujete nastavit speciální přepínač pro JVM. Jenže pamatujte na to... Daleko lepší by bylo aktivovat assert na úrovni kompilátoru a to ještě tak, že by byl standardně zapnutý. K jeho vypnutí by docházelo na explicitní žádost. Zde je alespoň z mého pohledu slabá obhajoba JVM přepínače.
Unit test kultura
Tuším, že assert konstrukt převzala Java z Céčka, kde se jedná o celkem zaběhnutou konvencí. Alespoň já o assert mluvím především s programátory, kteří na javu přešli z Céčka. Jenže v době zavedení do Javy, byl již poměrně silně zavedený koncept unit testů. Tedy to co se pomocí assert kontrolovalo mimoděk, tak se pomocí unit testů kontrolovalo (testovalo) přímo a tvoří to v Jave jakousi konvenci.
Související články
Související epizody CZ Podcastu
- #3 · Java 6 SE, Vývoj webových aplikací
Dagi a Filemon o novinkách v Javě 6 a webových frameworcích.
- #1 · Vývojová prostředí v Javě
První díl CZ Podcastu se věnuje vývojovým prostředím pro Javu.