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).
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.
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
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
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.
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.
Quem mandou usar o Visual Studio…
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…