alphagon scrie:Mi-ai putea da un exemplu ceva mai concret unde bubble-ul ar putea crea probleme? Un scenariu..
Acuma, sper ca nu m-am exprimat tare prost. Si bubbling-u are rolul lui, si in anumite situatii e folosit si e "relativ ok" ( ca si cand vine vorba de scrollbar-uri si diferite butoane care pot avea listenerele cine stie unde pentru a putea fi "monitorizate global" si de a putea reactiona la un astfel de eveniment "global" ).
Pana la urma, nu pot spune ca bubbling-u e "extremely bad" ci doar ca deschide mai multe portite catre posibile erori/probleme viitoare. Un scenariu mai concret: sa spunem ca iti creezi aplicatia pe mai multe module ( din .swf-uri separate ) unde fiecare modul dispatch-uie cine stie ce evenimente bubble-uite pentru a semnala o schimbare in stare si la care sa poti sa reactionezi in "main".
Gandeste ce s-ar intampla atunci cand ai incepe sa stack-uie module ( adica sa compui de exemplu o componenta mai mare din 2-3 sau mai multe componente micutze - si poate si acele componente la randul lor sa fie compuse din alte componente care fac dispatch la evenimente bubble-uite ) iar intr-un astfel de modul te-ai inscrie la un event al carui nume a fost deja folosit intr-un alt modul si care face si bubbling ( evident, tu poate nu stii ca acel nume e deja folosit - si scopul folosirii poate chiar e complet diferit )... In modulul nou, tu poate nu ai nicio treaba cu celalalt modul, ci pur si simplu ai ceva ce vrei sa se schimbe atunci cand tot in interiorul aceluiasi modul se intampla ceva. Aici intervine problema... Daca in celalalt modul faci ceva schimbare care va trimite un eveniment bubbel-uit care se regaseste si intr-un alt modul, adica exista un listener care asteapta un eveniment de acelasi tip ( listener-ul respectiv avand scopuri total diferite ) atunci mai mult ca sigur ca o sa te trezesti cu o tona de erori, o aplicatie data complet peste cap si nici macar nu o sa ai de unde sa aflii de ce ( debugger-u n-o sa te ajute in astfel de situatii ).
Asta ar fi situatia "fericita", gandeste ca acelasi lucru s-ar putea intampla daca te pune cineva sa lucrezi pe proiectul unui al developer care a folosit bubbling si diferite swf-uri pentru a face who knows what ( sau nici nu are nevoie de swf-uri, ci pur si simplu sa fi construit aplicatia in asa fel incat cine stie de unde sa bubble-uie un event si sa-l prinda iara who knows where )... daca ai cumva "norocul" sa definesti cumva si tu un eveniment cu acelasi nume ca si cel folosit de developer-ul anterior ( despre care tu nu prea ai de unde sa stii prea multe - si mai ales nu informatii de genu ), atunci sa vezi cum te trezesti cu N erori de cine stie unde si mai ales de ce, cand tu nu ai facut altceva decat incercai sa testezi noua ta implementare ( care sintactic e extrem de corect dar tot o ia razna dintr-un "motiv necunoscut"... si atunci stai ore, zile, si mai multe zile pana intr-un final iti dai seama care-i problema si sa ajungi la concluzia: "sa-l bata D******* pe ala cu bubbling-u lui cu tot" )...
Nu stiu daca am fost suficient de clar, dar sper ca ai inteles ideea.

Deci bubbling-u nu e "extremly bad" dar nici bun nu e, si in parerea mea ar trebui evitat ( exceptie situatiile in care chiar nu ai de ales - dar nu imi prea vin multe situatii de genu in minte, doar aia cu scrolling-u si poate inca 1-2 - dar nici acolo nu e chiar obligatoriu sa folosesti bubbling daca scrollbar-u tau nu trebuie "monitorizat" din orice punct al aplicatiei - si chiar si daca ar trebui monitorizat, sunt convins ca ar gasi omul solutii mult mai bune decat bubbling-u daca ar cauta ). Pe scurt: Try avoiding ambiguous and spaghetti code!