La parenthèse fermante sur sa propre ligne est inacceptable? [fermé]

8

J'utilise Emacs depuis un certain nombre d'années maintenant, mais je suis récemment tombé sur les normes de codage . Là, il est indiqué:

Ne prenez pas l'habitude de mettre des parenthèses fermées sur les lignes par eux-mêmes; Les programmeurs Lisp trouvent cela déconcertant.

C'est exactement l'habitude que j'ai prise, car je trouve le code plus facile à lire. Je vois des styles mixtes dans les packages livrés avec Emacs. Ma question est de savoir si ce déconcertant est commun à la plupart des programmeurs elisp.

Edit: En regardant mon code, je ne suis pas strictement le suivre. Le code serait alors assez horrible. C'est surtout le désamorçage, laissez, si et ainsi de suite. Mais cela semble aller à l'encontre du grain, alors je devrais probablement arrêter de faire ça. Bravo pour l'entrée.

(Basé sur une opinion limite, mais il semble lié à la fermeture d'accolades en C ++, où il ne devrait pas être controversé de déclarer qu'ils devraient généralement être sur leurs propres lignes).

Nom d'utilisateur significatif
la source
4
Pas inacceptable, juste vraiment ennuyeux :)
abo-abo
4
Considérez-le comme un langage d'espaces blancs, sauf que les crochets suppriment toute ambiguïté - dans un lisp bien formaté, vous devriez pouvoir le lire sans regarder les crochets
Squidly
1
Je suis curieux de savoir quels paquets livrés avec emacs n'y adhèrent pas.
Malabarba
3
@Malabarba Une recherche avec agsur les sources lisp me donne 3414 candidats pour les ^\s*?\)$regex qui composent 468 fichiers qui appartiennent à environ 200 packages?
wasamasa
1
@wasamasa Bonne idée. J'ai mis cela à travers quelques tuyaux de plus, et j'ai obtenu que 90% des .elfichiers ont moins de 10 instances de cela. Cela signifie que ces fichiers ne l'adoptent pas comme style, ils l'utilisent simplement à certains endroits pratiques (comme pour terminer des fonctions très longues).
Malabarba

Réponses:

6

Eh bien, une réponse courte est "il n'y a pas besoin". Comme Emacs peut analyser les expressions s de LISP, il sait exactement où les formulaires s'équilibrent et peut ré-indenter correctement le code. Dans ce cas, le fait de déplacer un support vers sa propre ligne gaspille simplement une ligne d'espace supplémentaire et en même temps n'est pas idomatique et choquant pour les autres programmeurs LISP habitués au style canonique. Comme cela a été mentionné dans les commentaires, cela ne vous empêche pas d'utiliser un espace blanc vertical pour séparer visuellement des morceaux de code.

Dans la pratique, beaucoup d'Emacs utilisant des programmeurs LISP utilisent une variété d'indices visuels supplémentaires comme le mode show-paren qui aident à naviguer à travers un nid dense de parenthèses fermantes. Les ingénieurs qui ont intégré des modules tels que paredit et smart-parens dans leur cycle d'édition sont devenus un avec l'AST et manipulent simplement sa structure directement de manière à ce que les expressions soient toujours équilibrées et complètes.

stsquad
la source
Bien sûr, j'ai des parenthèses correspondant, etc., mais je pense que l'espace vertical a sa place dans tout le code, et c'est ce que cette habitude non recommandée apporte. Mais un style commun est toujours bon, pour tout public, j'utiliserais la méthode recommandée. Mais pour inverser la tendance, quelle valeur apporte la masse de parenthèses à la fin :).
Nom d'utilisateur significatif
4
Vous pouvez toujours ajouter un espace vertical; rien ne dit que vous devez passer chaque ligne à la suivante. Parfois, l'espace vertical est utile; parfois ce n'est pas le cas. Mettre les parenthèses à la fin de la ligne vous permet de choisir quand ajouter un espace vertical et quand ne pas le faire. Parens sur une nouvelle ligne force l'espace vertical, et beaucoup de lui.
zck
@zck: J'ai mis à jour la réponse pour mentionner votre point. Merci.
stsquad du
Bon point. J'ai commencé à changer mon code pour me conformer à la norme. Pas beaucoup de différence, donc devrait être rapide pour s'y habituer. Je suppose que je pensais que les parenthèses devraient être utilisées pour quelque chose, alors que la plupart des autres semblent les ignorer.
Nom d'utilisateur significatif
6

Le Guide de style Lisp de Riastradh développe un peu plus sur ce sujet spécifique. Bien qu'il décourage généralement de placer des parenthèses fermantes sur leur propre ligne, il reconnaît plusieurs exceptions, comme une ligne précédente avec un paren de fermeture commenté et de très longues listes qui autrement gâcheraient constamment les différences lors de l'ajout de nouveaux éléments au début ou à la fin. .

wasamasa
la source
1

J'écris Elisp depuis environ 2-3 ans maintenant. Au début, je faisais le truc des parens suspendus, mais depuis que j'ai découvert la règle que vous avez mentionnée, j'ai commencé à le faire moi-même. Et je peux dire maintenant qu'il est beaucoup plus facile de lire le code lorsqu'il est correctement stylisé.

J'ai même écrit du code de mise en forme LISP ici: lispy-tab .

Et, bien sûr, j'ai show-paren-modetout le temps.

abo-abo
la source