Ich benutze Emacs seit einigen Jahren, bin aber erst kürzlich über die Codierungsstandards gestolpert . Dort heißt es:
Machen Sie es sich nicht zur Gewohnheit, Linien in engen Klammern zu setzen. Lisp-Programmierer finden das beunruhigend.
Dies ist genau die Gewohnheit, die ich aufgebaut habe, da ich finde, dass der Code leichter zu lesen ist. Ich sehe gemischte Stile in den mit Emacs gelieferten Paketen. Meine Frage ist, ob diese Verwirrung den meisten Elisp-Programmierern gemeinsam ist.
Bearbeiten: Wenn ich meinen Code betrachte, folge ich dem nicht genau. Dann wäre der Code ziemlich schrecklich. Es ist meistens defun, lass, wenn und so weiter. Aber es scheint gegen den Strich zu sein, also sollte ich wahrscheinlich damit aufhören. Prost auf die Eingabe.
(Borderline Opinion Based, aber es scheint mit dem Schließen von geschweiften Klammern in C ++ zu tun zu haben, wo es nicht umstritten sein sollte, anzugeben, dass sie im Allgemeinen auf ihren eigenen Linien stehen sollten).
quelle
ag
den Lisp-Quellen gibt mir 3414 Kandidaten für den regulären Ausdruck^\s*?\)$
, die 468 Dateien umfassen, die zu etwa 200 Paketen gehören?.el
festgestellt , dass 90% der Dateien weniger als 10 Instanzen davon haben. Das heißt, diese Dateien übernehmen es nicht als Stil, sondern verwenden es nur an einigen geeigneten Stellen (um wirklich lange Funktionen zu erledigen ).Antworten:
Nun, eine kurze Antwort lautet "es gibt keine Notwendigkeit". Da Emacs die S-Ausdrücke von LISP analysieren kann, weiß es genau, wo sich die Formulare ausgleichen, und kann den Code korrekt erneut einrücken. In diesem Fall verschwendet das Verschieben einer Klammer in die eigene Zeile einfach eine zusätzliche Zeile Platz und ist gleichzeitig nicht idomatisch und erschüttert andere LISP-Programmierer, die an den kanonischen Stil gewöhnt sind. Wie in den Kommentaren erwähnt, schließt dies nicht aus, dass Sie vertikale Leerzeichen verwenden, um Codestücke visuell zu trennen.
In der Praxis verwenden viele Emacs, die LISP-Programmierer verwenden, eine Vielzahl zusätzlicher visueller Hinweise wie den Show-Paren-Modus , die beim Navigieren durch ein dichtes Nest aus schließenden Klammern helfen. Ingenieure, die Module wie paredit und smart-parens in ihren Bearbeitungszyklus aufgenommen haben, sind mit dem AST eins geworden und manipulieren seine Struktur einfach direkt so, dass Ausdrücke immer ausgewogen und vollständig sind.
quelle
Riastradhs Lisp Style Guide geht etwas genauer auf dieses spezielle Thema ein. Während er generell davon abhält, schließende Klammern in die eigene Zeile zu setzen, erkennt er mehrere Ausnahmen, wie z. B. eine vorherige Zeile, in der ein schließender Paren auskommentiert wird, und sehr lange Listen, die sonst beim Hinzufügen neuer Elemente am Anfang oder Ende ständig Unterschiede durcheinander bringen würden .
quelle
Ich schreibe jetzt seit ungefähr 2-3 Jahren Elisp. Zuerst habe ich die Sache mit den hängenden Eltern gemacht, aber seit ich die von Ihnen erwähnte Regel entdeckt habe, habe ich selbst damit begonnen. Und ich kann jetzt sagen, dass es viel einfacher ist, den Code zu lesen, wenn er richtig gestaltet ist.
Ich habe hier sogar einen LISP-Prettifizierungscode geschrieben: lispy-tab .
Und natürlich habe ich die
show-paren-mode
ganze Zeit auf.quelle