Nezlobte se na mě, ale konstrukce TopicName = CStr(r(0)) je zcela principiálně chybně a neměla by se vyskytovat ve výukovém materiálu.
Ne, že by nefungovala, dokonce možná je skutečně o pár nanosekund rychlejší než použití jména pole. Ale pane Tichý, víte kolik trvá i nejmenší databázový dotaz, zvláště když máte mezi web serverem a databázovým serverem vnitřní firewall? Jsou to řádově milisekundy. Touto konstrukcí tak ušetříte řádově 0,1% času zpracování dotazu. Čistě pro srovnání, vhodnou volbou clusterových indexů, o které nemluvíte (nevýtýkám to, nepatří to do problematiky článku, a možná je v tomto případě SQL server dokonce trefí sám), ušetříte tak 99% času dotazu (až budou tabulky pořádně naplněny). A stále bude prostor aplikaci dále optimalizovat uchováním počítaných agregátů v nadřízené tabulce!
Chyba je v tom, že tato konstrukce není stabilní a samodokumentovatelná. Stabilní znamená, že jakmile někdo změní o pár řádek výše SQL výraz, tak mu tento kód nebude fungovat, nebo dokonce bude zobrazovat data ze špatného pole.
Není samodokumentovatelná, protože když někdo čte kód, musí někde složitě hledat, co Rs(0) znamená, a nebo musí k tomu číst komentář, který někdo musel napsat. Rs("Name") je jasné a žádný komentář nepotřebuje.
Je zcela nepochopitelné, že většina programátorů se snaží honit zlomky milisekund v podobných případech, za cenu snížení srozumitelnosti kódu. Pokud jde o větší projekt na kterém pracuje více lidí, vedou podobné praktiky k mnoha chybám, jejichž odstranění je strašně drahé. Bohužel, máme s tím ve firmě vlastní zkušenosti, nehledě na tisíce knih, které se tím zabývají. Daleko více se vyplatí programovat defenzivně a srozumitelně za cenu minimální ztráty výkonu v podobných případech a ušetřený čas pak věnovat na optimalizaci algoritmů nebo databáze (hraní si s indexy apod.), nebo za ušetřené peníze na vývoji koupit o 10 procent výkonnější server. Vyjde to levněji, nehledě na ty nervy při ladění.
Nejde samozřejmě jenom o Rs(0), ale o způsob programování celkově. Je třeba si uvědomit, že programový kód dnes většinou už není seznam instrukcí pro počítač, ale daleko více srozumitelný popis funkcí aplikace, kterému musí kromě ostatních členů týmu rozumět také ten nepříliš inteligentní, ale velmi akurátní počítač.
Proto upřimně doporučuji všem programátorům, na Rs(0) zapomeňte, jako by to neexistovalo. A prosím všechny lektory, aby ho ve výukových příkladech neuváděli.