Porque a chave no Javascript deve ser aberta na linha de cima

O Visual Studio, além de ser uma IDE mega pesada, tem um problema que gera intrigas entre equipes: ele abre por padrão uma função no JavaScript colocando a chave na linha de baixo.

Parece algo mínimo, mas irrita profundamente quem está acostumado a trabalhar da forma correta.

Porque forma correta? Simples, porque pode dar erro se colocar a chave na linha de baixo.

Pensem na função abaixo getUser que retorna um objeto em JavaScript

function getUser(){
	return {
		nome:'Danilo',
		idade:28
	}
}

getUser() // retorna um objeto

Se fosse pra deixar a chave embaixo, ficaria assim:

function getUser()
{
	return 
	{
		nome:'Danilo',
		idade:28
	}
}

getUser() // retorna undefined

Só que há um problema: pelo fato do ponto e vírgula indicando quebra de linha ser no JavaScript ser opcional, o return não entende que é pra retornar um objeto e encerra a função ali, retornando undefined.

E tem um caso pior, que simplesmente dá erro de sintaxe:

function getPosition()
{
   return 
   {
       top:32,
       left:50
   }
}
// dá erro "SyntaxError: Unexpected token :"

E se fosse feito com os braces na linha de cima, daria certo.

O incrível é que mesmo com esse argumento, tem programador que não dá o braço a torcer e insiste dizendo que JavaScript veio do java e no java se programa assim. ERRADO, JavaScript veio de Scheme e qualquer livro de Padrões em Javascript vai aconselhar abrir o bloco com a chave na linha de cima.

Dá pra configurar isso no Visual Studio 2010 (no 2008 deve dar também).

7 thoughts on “Porque a chave no Javascript deve ser aberta na linha de cima

  1. Ok, tu me falou do return, isso eu concordo, pois as chaves do JSON são para delimitar o tipo de variável, o típo JSON, seria o mesmo se tu retornasse qualquer outro tipo em baixo do return, tem que ser na linha.

    O parenteses de função, é para marcar escopo, ou seja, é uma coisa completamente diferente, mas que usa o mesmo token.

    Sendo assim, não vejo problemas em uma função do iniciar o parenteses na linha abaixo, não é errado, é apenas uma outra metodologia.

  2. Concordo com o Guilherme e o Adilson, não há problema algum em usar as chaves na linha de baixo, é até recomendável, o erro no exemplo do Danilo é que o objeto JSON inicia na linha abixo do return, e isso sim está errado, pois a s chaves da função servem para demarcação de bloco de código e as chaves json para criar o objeto, e o return devolve o que está logo em seguida (se houver), senão vai dar erro de sintaxe

  3. Eu não sei quem começou com essa história de quebrar a linha na chave de abertura…

    Isso deve ser coisa da microsoft, só pode… Percebi que muito desenvolvedor C# adota essa metodologia. Só isso deveria ser motivo suficiente para não fazer rsrs.

    Acho uma bosta…terrível pra ler o código principalmente com mais de um if aninhado.

    Douglas Crockford já comentou sobre esse hábito (ruim) no Javascript.

  4. Quando eu comecei a programar aprendi a colocar a chave na linha de cima. Seja em C, Java, Javascrip t…
    De forma que acho perda de tempo e espaço fazê-la na linha de baixo.

  5. Pra mim isso parece mais um bug dos parsers do javascript que impede que o programador use o padrão que considera mais agradável, obviamente os mais estruturados preferem gastar uma linha (nossa, quanto tempo e espaço perdido hein?) para que as chaves fiquem alinhadas verticalmente e você possa visualizar onde abrem e fecham com mais facilidade, colocar ela na frente, virou um tipo de padrão oficial do mau gosto, que os caras se gabam de usar mas torna o texto menos legível, o que contraria a idéia uma boa prática, a da boa legibilidade do código…

Leave a Reply

Your email address will not be published. Required fields are marked *