> Globální proměnné nejsou prasení v rozumném počtu. Stejně tak jako > leccos dalšího. > > > V tomhle si dovolim nesouhlasit. Pokud programator potrebuje pouzit > globalni promennou, udelal v navrhu datovych struktur chybu. >
Já tenhle názor nesdílím. Globální proměnná je zkrátka jenom datová proměnná viditelná pro všechny moduly programy. Někdy se použití globální proměnná zastírá tím, že se vytvoří třída se statickými daty, a nebo třída s jedinou instancí (singleton), ale to nic nemění na faktu, že je to de facto globální proměnná rovněž. Je fakt, že globální proměnné se nechutně nadužívají, a že lze pomocí ní docílit kódu, který nejde udržovat, protože kam sáhnete, tam se to rozsype následkem side effectů, které není šance vychytat. Nicméně globální proměnné užitečné jsou, jako vše v dobrých rukou při promyšleném použití. Představte si třeba, že máte multithreadovou aplikaci, která po startu neudělá nic jiného, než rozjede x threadů (třeba několik tisíc), a všechny thready budou synchronizovány v určitých fázích pomocí jednoho synchronizačního objektu. Pak nevidím důvod, proč synchronizační objekt neprohlásit za globální proměnnou, byť uznávám, že je to věcí názoru. Stejně tak jsou přirozené globální proměnné - například parametry procesu, nebo třeba časové pásmo používané vaším procesem, jazyk ve kterém pracuje proces, aktuální adresář procesu, stavy obsluh signálu a obslužné funkce, proměnné procesu (myšleno environment procesu), a řada dalších. Ale jinak souhlasím, že každá globální proměnná ve smyslu "all process scope" by měla být sakra zdůvodněná, a mělo by se držet hesla "nepoužiješ globální proměnnou nadarmo". Miloslav Ponkrác _______________________________________________ Python mailing list [email protected] http://www.py.cz/mailman/listinfo/python
