Nome:
Local: Rio de Janeiro, RJ, Brazil

Que perguntinha hein?! Mas vamos lá, adoro estudar assuntos relacionados à web, sempre que posso aprendo uma tecnologia, técnica ou linguagem nova. Tento sempre ver quais são as tendências e acompanha-las, enfim eu sou um eterno aprendiz. Deixando o lado profissional, entrando no lado pessoal, sou uma pessoa super gente-boa (pelo menos eu me acho. rs), adoro curtir a night, sair com os amigos, fazer novas amizades e viajar (tem coisa melhor do que isso?) Acho que você já está sabendo demais sobre mim. Fuiii...

terça-feira, 26 de junho de 2007

Comportamento Fora Da Estrutura

"Verdade é algo temporal e pessoal", essa é a minha versão da verdade, pois de tempos em tempos quando achamos que algo é a verdade absoluta e não tem como mudar, descobrimos que estávamos enganado a respeito disso e nos perguntando como poderiamos ser tão tolos.

Depois dessa introdução (um tanto quanto, nada haver) vamos ao que interessa, pois bem outro dia estava lendo os meus feeds quando vi esse post, lá no Refatorando Padrões. Onde o Carlos afirmava que não concordava com todas as chamadas de funções no javascript, de início achei a idéia absurda e se já não tivesse lido alguns posts dele, com certeza não iria ler o post até o fim, pois para mim, até aquele momento, fazer as chamadas de funções pelo javascript é senso comum.Logo após a leitura do post começou uma pequena discussão (diga-se de passagem, bem proveitosa), onde cada um defendeu o seu ponto de vista e no final das contas ficamos onde começamos, eu defendendo a chamada de funções pelo javascript e ele chamar a função pelo html. Como disse anteriormente, a verdade é algo relativo e cada um tem a sua versão da verdade, dentro de um limite e razões para tal. Agora tentarei defender a minha verdade. Let's Go:

Chamada da função pelo html:

<input type="button" value="botão" id="meuBotao" onclick="meuEventoAqui()" />


Chamada da função pelo Javascript:

Arquivo HTML:

<input type="button" value="botão" id="meuBotao" />


Arquivo Javascript:

window.onload () {
document.getElementById("meuBotao").onclick = function () {
meuEventoAqui(); //ou o meu código, não preciso fazer a chamada de outra função posso programar diretamente aqui.
}
}


Olhando esse pequeno trecho, talvez você esteja me achando um louco em pensar que defendo a forma de atribuir eventos pelo javascript, pois dessa forma gerou 5 linhas à mais no meu código e da forma que o Carlos defende, chamo a função diretamente no evento e pronto problema resolvido! Pois bem, vamos às razões que me levam a preferir chamar pelo javascript:


  • Chamando todas as funções pelo javascript, não se mistura comportamento com estrutura.

  • Para fazer a manutenção de código, vc não precisa modificar estruturalmente (html), pois está tudo no javascript e dessa forma não é necessário fazer a mudança de dois arquivos, é necessário apenas a mudança no javascript (o que é mais coerente)

  • No final das contas o seu código não irá crescer tanto assim, mas as poucas linhas que geram a mais, com certeza é compensado com a facilidade da manutenabilidade (nem sei se essa palavra existe. rs)

  • Você pode usar a sua estrutura (html), em várias páginas, pois como só tem a estrutura, sendo necessário apenas trocar o javascript, sem maiores problemas.

  • Todos os eventos (ou a maioria deles) estarão no window.onload, portanto não é necessário ficar caçando elementos no seu html, para colocar as funções, tudo estará mais organizado para adicionar código, ou mudá-lo

  • Porque eu gosto desse jeito, talvez essa seja a mais importante ;).



Bom, essas são as minhas razões à acreditar que chamando as funções pelo javascript é melhor, mas a verdade não é absoluta e cabe à você decidir isso, então o que proponho é estudar ver as diferenças entre cada forma e escolhe-la, de acordo com a sua necessidade e depois me contar qual foi a escolha e me dizer as razões. Talvez, até possa mudar de opinião.

fuiii...

Marcadores: , ,

2 Comentários:

Anonymous Anônimo disse...

Oi Ramon,

Complementando o texto, só não concordo com este trecho "...no final das contas ficamos onde começamos...", afinal lembre-se você conseguiu mudar uma parte da minha opinião a respeito deste assunto ;).

Você disse que se um comportamento é utilizado várias vezes é melhor colocá-lo no javascript, sim concordo plenamente com essa opinião, eu não havia percebido isso, porque nesses casos repetidos eu costumo usar um componente que renderiza até mesmo a tag "input". Mas se for um html estático é realmente muito melhor linkar as chamadas no javascript.

O que ainda não concordo e ficamos empatados, é fazer a linkagem via javascript para todo e qualquer evento. Se o evento ocorre apenas uma vez então eu deixo no html mesmo pois para mim é mais fácil de encontrar ao fazer uma manutenção.

Bacana, gostei do post, bem proveitoso mesmo.

Abraços,

27 de junho de 2007 às 08:56  
Blogger ramon disse...

Olá Carlos,

"...no final das contas ficamos onde começamos...", expressei-me mal. Tanto para mim quanto para você foi muito boa a discussão, amadurecemos nossas opiniões.

Quanto a não fazer todas as chamadas via javascript, concordo contigo nesse ponto tb, tem coisas que podem ser linkadas diretamente do html, até fiz isso agora XD. A minha função de validação do form, fiz a chamada dela pelo html (Mas é só isso :)).

Abraços.

27 de junho de 2007 às 09:27  

Postar um comentário

Assinar Postar comentários [Atom]

<< Página inicial