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).

Você pode se interessar também por:

3 Responses to “Porque a chave no Javascript deve ser aberta na linha de cima”

  1. 1
    Guilherme Mar Says:

    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. 2
    Adilson Says:

    Mas as próprias coding conventions do Scheme também recomendam que você abra os blocos de instrução (funções, loops, if, etc) uma linha abaixo da declaração:

    http://en.wikipedia.org/wiki/Scheme_%28programming_language%29

  3. 3
    Mastergnus Says:

    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

Leave a Reply