Fechar parênteses na própria linha é inaceitável? [fechadas]

8

Eu uso o Emacs há vários anos, mas só recentemente me deparei com os padrões de codificação . Lá é afirmado:

Não crie o hábito de colocar parênteses próximos nas linhas; Programadores Lisp acham isso desconcertante.

Esse é exatamente o hábito que criei, pois acho que o código é mais fácil de ler. Eu vejo estilos misturados nos pacotes entregues com o Emacs. Minha pergunta é se esse desconcerto é comum à maioria dos programadores elisp.

Edit: Olhando para o meu código, não estou seguindo rigorosamente isso. Então o código seria bastante horrível. É principalmente desonesto, vamos, se e assim por diante. Mas, parece ser contra a corrente, então eu provavelmente deveria parar de fazer isso. Felicidades para a entrada.

(Baseado em opiniões limítrofes, mas parece relacionado ao fechamento de chaves em C ++, onde não deve ser controverso afirmar que geralmente elas devem estar em suas próprias linhas).

Nome de usuário significativo
fonte
4
Não inaceitável, apenas muito chato :)
abo-abo
4
Pense nisso como uma linguagem de espaços, exceto suportes de remover possível ambigüidade - em bem formatado lisp você deve ser capaz de lê-lo sem olhar para os suportes
squidly
1
Estou curioso para saber quais pacotes entregues com o emacs não aderem a isso.
Malabarba
3
@ Malabarba Uma pesquisa agnas fontes lisp me dá 3414 candidatos ao ^\s*?\)$regex que compõem 468 arquivos que pertencem a cerca de 200 pacotes?
Wasdechaves2
1
@wasamasa Boa ideia. Eu coloquei isso em mais alguns canais e consegui que 90% dos .elarquivos tenham menos de 10 instâncias disso. Significando que esses arquivos não o adotam como um estilo, eles apenas o usam em alguns locais convenientes (como finalizar funções muito longas).
Malabarba

Respostas:

6

Bem, uma resposta curta é "não há necessidade". Como o Emacs pode analisar as expressões s do LISP, ele sabe exatamente onde os formulários se equilibram e pode reentrar o código corretamente. Nesse caso, mover o suporte para sua própria linha simplesmente desperdiça uma linha extra de espaço e, ao mesmo tempo, não é idomatic e é dissonante para outros programadores LISP que estão acostumados ao estilo canônico. Como foi mencionado nos comentários, isso não o impede de usar o espaço em branco vertical para separar visualmente os pedaços de código.

Na prática, muitos Emacs usando programadores LISP usam uma variedade de dicas visuais adicionais, como o modo show-paren, que ajudam a navegar por um denso ninho de parênteses de fechamento. Os engenheiros que incluíram módulos como paredit e smart-parens em seu ciclo de edição se uniram ao AST e estão simplesmente manipulando sua estrutura diretamente de uma maneira que as expressões sejam sempre equilibradas e completas.

stsquad
fonte
É claro que tenho correspondência entre parênteses e assim por diante, mas acho que o espaço vertical tem um lugar em todo o código, e é isso que esse hábito não recomendado traz. Mas um estilo comum é sempre bom, para qualquer coisa pública eu usaria da maneira recomendada. Mas, para reverter, que valor traz a massa de parênteses no final :).
Nome de usuário significativo
4
Você sempre pode adicionar espaço vertical; nada diz que você deve digitar cada linha até a próxima. Às vezes, o espaço vertical é útil; às vezes não é. Colocar os parênteses no final da linha permite escolher quando adicionar espaço vertical e quando não. Parens em uma nova linha força o espaço vertical, e muito dele.
Zck
@ zck: Eu atualizei a resposta para mencionar o seu ponto. Obrigado.
Stsquad 02/12/2014
Bom ponto. Comecei a mudar meu código para estar em conformidade com o padrão. Não há muita diferença, por isso deve ser rápido para se acostumar. Acho que senti que os parênteses deveriam ser usados ​​para alguma coisa, enquanto a maioria dos outros parece ignorá-los.
Nome de usuário significativo
6

O Lisp Style Guide de Riastradh elabora um pouco mais sobre esse tópico específico. Embora ele geralmente desencoraje a colocação de parênteses de fechamento em sua própria linha, ele reconhece várias exceções, como uma linha anterior com um parêntese de fechamento sendo comentado e listas realmente longas que, de outra forma, estragariam constantemente as diferenças ao adicionar novos elementos no início ou no final .

wasamasa
fonte
1

Escrevo Elisp há cerca de 2-3 anos. No começo, eu estava fazendo a coisa de pendurar, mas desde que descobri a regra que você mencionou, comecei a fazer isso sozinha. E posso dizer agora que é muito mais fácil ler o código quando ele está com estilo adequado.

Eu até escrevi um código de pretexto para LISP aqui: lispy-tab .

E, claro, eu tenho show-paren-modeo tempo todo.

abo-abo
fonte