Ich bin neu in clojure und die Hauptsache, mit der ich mich abmühen muss, ist das Schreiben von lesbarem Code. Ich habe oft Funktionen wie die folgende.
%Vor%mit vielen Aufbauten der Endhalterungen. Was sind die besten Möglichkeiten, dies zu reduzieren oder so zu formatieren, dass es einfacher ist, fehlende Klammern zu erkennen?
Ein Editor, der die Klammern färbt, ist in diesem Fall sehr hilfreich. Zum Beispiel, was Ihr Code in meinem vim-Editor aussieht (mit vimclojure ):
Da du nicht gesagt hast, welchen Editor du verwendest, musst du die Rainbow-Coloring-Funktion für deinen Editor entsprechend finden.
Wenn Sie den paredit
-Modus von Emacs verwenden (der auch in einigen anderen Editoren emuliert wird), bedeutet das, dass Sie - außer Sie kopieren / einfügen mit Maus- / erzwungenen unstrukturierten Auswahlen - mit übereinstimmenden Klammern / Klammern / Klammern und verwandten Einrückungen umgehen ohne zu zählen benötigt.
Emacs mit Ссылка (sehr empfehlenswert!) hat standardmäßig clajure aktiviert. Andernfalls siehe Ссылка
Zusätzlich zu einem Editor, der Klammervergleich unterstützt, können Sie auch versuchen, Ihren Code weniger verschachtelt zu machen. Ich glaube, dass Ihre Funktion wie folgt umgeschrieben werden könnte:
%Vor%Natürlich ist das eher eine Kunst (Handwerk) als eine Wissenschaft, aber einige Hinweise (in zufälliger Reihenfolge):
chouser
und ->
threading-Makros sind sehr nützlich zum Reduzieren von verschachteltem Code Ich kann nicht stark genug wiedergeben, wie wertvoll es ist, paredit oder ein ähnliches Feature in einem anderen Editor zu verwenden. Es befreit dich von der Sorge um Parens - sie passen sich immer perfekt an, und langweilige, fehleranfällige Bearbeitungsaufgaben wie " (foo (bar x) y)
in (foo (bar x y))
ändern" werden zu einem einzigen Tastendruck. Für eine Woche oder so frustriert Sie parated unglaublich, da es Sie daran hindert, Dinge manuell zu erledigen, aber sobald Sie die automatischen Methoden kennen, mit parens umzugehen, werden Sie niemals in der Lage sein, zurück zu gehen.
Ich habe kürzlich gehört, dass jemand sagt, und ich denke, es ist ungefähr richtig, dass das Schreiben von Lispeln ohne Parität wie das Schreiben von Java ohne Auto-Complete (möglich, aber nicht sehr angenehm) ist.
das ist lesbarer, denke ich. Beachten Sie Folgendes:
seq
testen - siehe Ссылка
wie für die Parens - Ihr Editor / Ide sollte sich darum kümmern. Ich tippe hier blind, also vergib mir, wenn es falsch ist ...
[Rafał Dowgirds Code ist kürzer; Ich lerne auch ...]
[aktualisiert:] nachdem ich den "faulen" Link erneut gelesen habe, denke ich, dass ich faule Sequenzen falsch behandelt habe,
Ich bin mir nicht sicher, ob Sie alle Klammern vermeiden können. Was ich jedoch Lispers gesehen habe, ist ein Editor mit parent matching / highlight und vielleicht sogar Rainbow Klammern: Ссылка
Ehrlich gesagt, das sind die Features, die auch für Nicht-Lisp-Editoren nützlich wären:)
Formatieren Sie es wie Sie möchten. Es ist Aufgabe des Redakteurs, den Code in dem vom Leser bevorzugten Stil anzuzeigen. Ich mag das C-style hierarchische baumförmige Format mit einzelnen Klammern auf ihren eigenen Zeilen (alle LISPers kochen vor Wut: -)))))))))))))
Aber ich benutze manchmal diesen Stil:
%Vor%Dies ist eine Aktualisierung des traditionellen Stils, in dem eckige Klammern stehen (log2 branch-level)
Der Grund, warum ich den Raum mag, ist, dass meine Sehkraft schlecht ist und ich einfach keinen dichten Text lesen kann. Also zu den wütenden LISPern, die mir vorschreiben, Dinge auf die traditionelle Weise zu tun, sage ich, nun, jeder hat seinen eigenen Weg, entspannen Sie sich, es ist in Ordnung.
Ich kann nicht darauf warten, dass jemand in Clojure einen anständigen Editor schreibt, der kein Texteditor ist, sondern ein -Expressions-Editor , und das Problem der Formatierung verschwindet. Ich schreibe selbst, aber es braucht Zeit. Die Idee besteht darin, Ausdrücke zu bearbeiten, indem Funktionen auf sie angewendet werden, und ich navigiere den Code mit einem Zipper, Ausdruck für Ausdruck, nicht mit Wörtern oder Zeichen oder Linien. Der Code wird durch die gewünschte Anzeigefunktion dargestellt.
** Ja, ich weiß, dass es Emacs / Parait gibt, aber ich habe Emacs probiert und es hat mir nicht leid getan.
Tags und Links clojure lisp readability code-readability