Vírgulas, um problema constante em JavaScript

Vírgulas, um problema constante em JavaScript

E ai galera, estou de volta das férias um pouco mais animado e e falido que antes :D .

Como havia prometido no post Saindo de Férias, sem pânico, eu já volto estou começando uma série de posts dedicados aos iniciantes em ExtJS e também aos iniciantes em JavaScript e quem sabe alguns posts sobre PHP, SQL, Linux, etc… Queria pedir a todos que acompanham este blog que deem suas opiniões nos comentários, sugestões a respeito do blog e principalmente sugestões de conteúdos que deveriam ser abordados.

Visão geral do problema

Vírgulas são um problema real e constante no ExtJS, digo ExtJS pelo fato de usarmos muitos objetos, sendo objetos físicos ou objetos anônimos como passagem de configurações mas vale para qualquer biblioteca JavaScript ou a programação pura em JavaScript.

Linguagem interpretada

Como todos sabem, ou pelo menos deveriam saber, o nosso amado JS é uma linguagem que é interpretada na hora da execução e o pior de tudo, ela é interpretada por vários motores diferentes e cada browser pode trata-la de forma diferente.

Formato do Objeto em JS

Um objeto em JavaScript segue a simples lógica de pares de valores separados por virgular entre colchetes, cada par de valor é formado por um nome de propriedade e um valor separados por dois pontos (:), ou seja:

{prop1:val1, prop2:val2, prop3:val3}

Aprendermos com o passar do tempo que temos de formatar nosso código para um melhor intendimento e esse processo chamamos de itentação, vamos a um exemplo:

{
	prop1:val1,
	prop2:val2,
	prop3:val3
}

Ótimo, agora temos um objeto um pouco mais organizado, o problema agora é que fica fácil adicionar uma nova propriedade ou até mesmo retirar ou comentar uma destas e essa facilidade nos remete ao erro, exemplo:

  • Adicionando – Note que a penúltima propriedade fica sem a virgula no final por um leve esquecimento do programador
{
	prop1:val1,
	prop2:val2,
	prop3:val3   // <== Erro
	prop4:val4   // <== Vai dar pau aqui, pq? pq pro navegador deveria ter
	             // acabado no item anterior ou seja o cara errado é esse último item.
}
  • Removendo – Note que a última propriedade contém uma virgula no final também por um leve esquecimento do programador
{
	prop1:val1,
	prop2:val2,  // <== Pro navegador isso indica que deveria ter mais
	             // propriedades depois destao que não é verdade, alguns
	             // navegadores aceitam isso numa boa, mas o IE não é um
	             // desses caras legais.
}
  • Comentando – Note que acabamos por ter o mesmo erro do item anterior
{
	prop1:val1,
	prop2:val2,
	//prop3:val3
}

Solução

Bom, tenho certeza que você que leu até aqui acredita que possa existir uma solução para esse problema, bom, sinto lhe dizer que não, não tem.

Algumas pessoas passaram a usar a virgula antes das propriedades de modo a não esquece-las, tudo bem, ajuda, mas não resolve, continuamos tendo os mesmo problemas, antes tínhamos problemas com a última propriedade agora temos problemas com a primeira:

  • Adicionando – Note que a última propriedade fica sem a virgula antes, mas com certeza é muito mais difícil esquecer neste caso do que no caso anterior
{
	prop1:val1
	,prop2:val2
	,prop3:val3
	prop4:val4   // <== Aqui o programador tem que ter um sério problema de
	             // esquecimento.
}
  • Removendo – Aqui se deletarmos o primeiro item e esquecermos de tirar a virgula do segundo temos um sério problema
{
	,prop2:val2  // <== É como se tivéssemos um item vazio antes destes 2 e isso gera erro
	,prop3:val3  // em qualquer navegador, pior que o erro do estudo anterior.
}
  • Comentando – Note que acabamos por ter o mesmo erro do item anterior
{
	//prop1:val1
	,prop2:val2
	,prop3:val3
}

Conclusão

Usar a virgula na frente das propriedades de um objeto é sim uma boa prática mas ela só adianta quando temos um código bem identado e garanto que não livra ninguém dos erros com vírgulas, essa metodologia nos ajuda na hora de adicionar propriedades e comentar propriedades, mas temos que tomar muito cuidado com a primeira propriedade.

Em resumo, eu uso a virgula depois das propriedades, é questão de gosto, o importante é saber como procurar os erros e estar ciente de que o erro pode ser uma simples vírgula, escolha a metodologia que melhor lhe agrade, use o firebug, persista na procura do erro e tudo dará certo.

Um programador tem que ser 33% bom em programação e 67% bom em achar erros. É errando que se aprende.

Twittar Isto!

Quem escreve

Rodrigo Krummenauer do Nascimento, técnico em informática, cursando Sistemas de Informação na FACCAT, nascido em 20/07/1988, 3 anos de experiencia profissional em Delphi com PostgreSQL, 2 anos de experiencia profissional em ExtJS com PHP, moderador do fórum nacional de ExtJS, singelo morador de uma pacata cidade de interior no Rio Grande do Sul, coordenador e desenvolvedor de um grupo de P&D em sua faculdade, http://nti.faccat.br.