[python] Brainstorm request: Vyuka programovani na gymplu
superman
feed na centrum.cz
Sobota Červen 7 12:59:33 CEST 2008
> 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
Další informace o konferenci Python