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).
fuente
ag
en las fuentes de lisp me da 3414 candidatos para la^\s*?\)$
expresión regular que componen 468 archivos que pertenecen a unos 200 paquetes?.el
archivos 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).Respuestas:
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.
fuente
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 .
fuente
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-mode
todo el tiempo.fuente