Paréntesis de cierre en la propia línea inaceptable? [cerrado]


8

He estado usando Emacs durante varios años, pero solo recientemente me topé con los estándares de codificación . Ahí se afirma:

No tengas la costumbre de poner paréntesis en las líneas por sí mismos; Los programadores de Lisp encuentran esto desconcertante.

Este es exactamente el hábito que he desarrollado, ya que encuentro que el código es más fácil de leer. Veo estilos mixtos en los paquetes entregados con Emacs. Mi pregunta es si este desconcierto es común a la mayoría de los programadores de Elisp.

Editar: Mirando mi código, no estoy estrictamente siguiendo esto. Entonces el código sería bastante horrible. En su mayoría se defun, deja, si y así sucesivamente. Pero, parece estar en contra del grano, por lo que probablemente debería dejar de hacer esto. Saludos por la entrada.

(Basado en la opinión límite, pero parece estar relacionado con el cierre de llaves en C ++, donde no debería ser controvertido afirmar que generalmente deberían estar en sus propias líneas).


44
No es inaceptable, solo realmente molesto :)
abo-abo

44
Piense en ello como un lenguaje de espacios en blanco, excepto que los corchetes eliminan la posible ambigüedad: en el ceceo bien formateado, debería poder leerlo sin mirar los corchetes
Squidly

1
Tengo curiosidad por saber qué paquetes entregados con emacs no se adhieren a esto.
Malabarba

3
@Malabarba ¿Una búsqueda agen las fuentes de lisp me da 3414 candidatos para la ^\s*?\)$expresión regular que componen 468 archivos que pertenecen a unos 200 paquetes?
wasamasa

1
@wasamasa Buena idea. Puse eso en un par de tuberías más, y obtuve que el 90% de los .elarchivos tienen menos de 10 instancias de esto. Lo que significa que estos archivos no lo adoptan como un estilo, solo lo usan en algunos lugares convenientes (como para terminar funciones realmente largas).
Malabarba

Respuestas:


6

Bueno, una respuesta corta es "no hay necesidad". Como Emacs puede analizar las expresiones s de LISP, sabe exactamente dónde se equilibran los formularios y puede volver a sangrar el código correctamente. En este caso, mover un soporte a su propia línea simplemente desperdicia una línea adicional de espacio y, al mismo tiempo, no es idomático y molesta a otros programadores de LISP que están acostumbrados al estilo canónico. Como se ha mencionado en los comentarios, esto no le impide utilizar espacios en blanco verticales para separar visualmente fragmentos de código.

En la práctica, muchos Emacs que usan programadores LISP usan una variedad de señales visuales adicionales como show-paren-mode que ayudan a navegar a través de un denso nido de paréntesis de cierre. Los ingenieros que tienen módulos subsumidos como paredit y smart-parens en su ciclo de edición se han unido al AST y simplemente están manipulando su estructura directamente de manera que las expresiones siempre estén equilibradas y completas.


Por supuesto, tengo coincidencia de paréntesis, etc., pero creo que el espacio vertical tiene un lugar en todo el código, y eso es lo que trae este hábito no recomendado. Pero un estilo común siempre es bueno, para cualquier cosa pública usaría la forma recomendada. Pero para darle la vuelta, ¿qué valor aporta la masa de paréntesis al final :).
Nombre de usuario significativo

44
Siempre puede agregar espacio vertical; nada dice que tienes que suavizar cada línea hasta la siguiente. A veces el espacio vertical es útil; a veces no lo es. Poner los paréntesis al final de la línea le permite elegir cuándo agregar espacio vertical y cuándo no. Parens en una nueva línea fuerza el espacio vertical, y mucho.
zck

@zck: He actualizado la respuesta para mencionar tu punto. Gracias.
stsquad

Buen punto. Empecé a cambiar mi código para cumplir con el estándar. No hay mucha diferencia, por lo que debería acostumbrarse rápidamente. Supongo que sentí que los paréntesis deberían usarse para algo, mientras que la mayoría de los demás parecen ignorarlos.
Nombre de usuario significativo

6

La guía de estilo Lisp de Riastradh explica un poco más sobre este tema específico. Si bien generalmente desaconseja colocar paréntesis de cierre en su propia línea, reconoce varias excepciones, como una línea anterior con un par de cierre comentado y listas realmente largas que de otro modo estropearían constantemente las diferencias al agregar nuevos elementos al principio o al final .


1

He estado escribiendo Elisp durante unos 2-3 años. Al principio, estaba haciendo lo de colgar, pero desde que descubrí la regla que mencionaste, comencé a hacerlo yo mismo. Y puedo decir ahora que es mucho más fácil leer el código cuando está correctamente diseñado.

Incluso escribí un código de prettificación de LISP aquí: lispy-tab .

Y, por supuesto, tengo show-paren-modetodo el tiempo.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.