it-swarm.com.de

Was sind die Vorteile einer alphabetischen Sortierung von Importen und Eigenschaften?

In meinem Unternehmen erfordert der Styleguide, dass Importe, Klasseneigenschaften, Aufzählungen und aufeinanderfolgende Variablendeklarationen alphabetisch sortiert werden. Ich finde das unnötig langweilig. Was sind die möglichen Vorteile dieser Praxis?

4
Vincent

Bei Importen werden ähnliche Importe zusammengefasst und es wird einfacher, zu sehen, was aus bestimmten Paketen importiert wird. In der Regel hat das alphabetische Sortieren den Nebeneffekt, dass alle Ihre lokalen Importe zusammengefasst werden, alle Pakete von Drittanbietern zusammengefasst werden und alle Ihre Standardbibliotheksimporte zusammengefasst werden. Bestimmte Pakete befinden sich an derselben Stelle, sodass auf einen Blick leichter erkennbar ist, ob eine Datei sie verwendet oder nicht.

Bei Variablendeklarationen ist es nur ein kleines bisschen schneller, eine Deklaration in einer großen Liste zu finden. Denken Sie daran, Sie lesen Code weit mehr als Sie schreiben.

In vim benutze ich :sort um Zeilen zu sortieren, und ich verstehe, dass die meisten IDEs dies für Sie tun können. Wenn Sie so viele Importe haben, dass die Sortierung mühsam wird, ist dies ein Zeichen dafür, dass Sie möglicherweise einen schlechten Zusammenhalt haben.

8
Karl Bielefeldt

Neben Karls Antwort gibt es noch einen weiteren Vorteil, den ich beim Herumspielen mit Go kennengelernt habe: Wenn Sie die Regel aufstellen, dass Dinge nur in eine Richtung erledigt werden können, dann muss niemand verschwenden Zeit darüber nachdenken, wie es geht.

In der Go-Community gibt es eine Regel, dass Pull-Anforderungen nur akzeptiert werden, wenn sie "idempotent unter gofmt" sind. Mit anderen Worten, PRs müssen mit gofmt formatiert werden. Und gofmt nimmt keine Argumente an, die angeben, wie Ihr Code formatiert werden soll! Im Gegensatz zu allen anderen bekannten Quellformatierungswerkzeugen können Sie also nicht konfigurieren, wie Ihr Code formatiert werden soll.

Ken Thompson schrieb, dass er zuerst dachte, dass er das absolut hassen würde; Immerhin war er an der Erstellung mehrerer Programmiersprachen (B) und Betriebssysteme (Unix, Plan 9) beteiligt und prägte den Stil von C, und er hat sehr starke Meinungen. Zu seiner eigenen Überraschung stellte er jedoch fest, dass diese strengen Regeln sehr befreiend waren: Er musste einfach nicht denken darüber, wo Klammern platziert werden sollen, wo Leerzeichen eingefügt werden sollen, ob Tabulatoren oder Leerzeichen verwendet werden sollen , in welcher Reihenfolge Erklärungen abgegeben werden sollen, in welcher Reihenfolge Importe eingereicht werden sollen und so weiter. Er könnte sich darauf konzentrieren, den Code zu schreiben, und gofmt erledigt den Rest.

Ein weiterer Vorteil, den er erwähnte, ist, dass es sehr einfach ist, in einer Codebasis eines Drittanbieters zu navigieren, wenn der gesamte Code genau gleich aussieht, da Sie sich wiederum auf die Semantik, den Kontrollfluss und den Datenfluss konzentrieren können, anstatt auf "Warum ist das so?" hier und nicht dort abstützen? "

Und ein Vorteil, den ich gefunden habe, ist, dass wenn sehr viel Code genau gleich aussieht, es sehr schwer zu erkennen ist, wer ihn geschrieben hat, was das Erreichen des hohen Ziels von kollektiver Codebesitz einfacher macht.

Ich habe mein IDE) so eingerichtet, dass Code während der Eingabe automatisch formatiert wird, wobei ich den akzeptierten Community-Styleguide für die Sprache befolge, in der ich schreibe. Und dann ist es mir einfach egal. Es ist wirklich so ist befreiend und zeitsparend.

9
Jörg W Mittag

Der einzige Vorteil der alphabetischen Sortierung besteht darin, dass sie einfach mit Werkzeugen automatisiert werden kann. Wenn Ihr Team entscheidet, dass eine bestimmte Liste alphabetisch sortiert werden soll, sollte es dies automatisieren und dann vergessen.

Der Gegenvorteil der alphabetischen Sortierung besteht darin, dass Sie die Semantik nicht in die Sortierreihenfolge kodieren können, da die alphabetische Reihenfolge eine semantisch bedeutungslose Reihenfolge ist. Jede halbherzige semantische Sortierung ist normalerweise besser darin, den Code klarer als die alphabetische Reihenfolge zu machen, selbst wenn die semantische Sortierregel in der gesamten Codebasis unklar und inkonsistent ist, sind sie normalerweise immer noch besser als alphabetisch (solange dies nicht absichtlich versucht wird) Schlecht).

Es macht keinen Sinn, den Codestil einer konsistenten, semantisch bedeutungslosen Sortierreihenfolge durchzusetzen, nur um die Sortierung manuell zu verwalten.

Wenn Sie keine Werkzeugunterstützung haben, um die Liste automatisch in alphabetischer Reihenfolge zu sortieren, sollten Sie stattdessen die Sortierreihenfolge nutzen, um eine Bedeutung darin zu codieren. Wenn Sie beispielsweise eine Rechteckklasse haben, bedeutet alphabetisches Sortieren, dass der Code für height () und width () wahrscheinlich weit voneinander entfernt ist, selbst wenn diese Methoden semantisch miteinander verknüpft sind. Bei der semantischen Reihenfolge sollten sie im Code nahe beieinander liegen.

Persönlich mag ich sortierte Importe. Es gibt nicht viel nützliche Bedeutung, die Sie in Importanweisungen codieren können, und die meisten Sprachen bieten eine ziemlich gute Toolunterstützung, um dies zu automatisieren. Die Liste der Importe kann auch sehr umfangreich werden, daher ist es praktisch, sie sortieren zu lassen.

Das Sortieren von Klassen/Eigenschaften/Methoden/CSS-Deklarationen ist jedoch normalerweise kontraproduktiv. Es gibt viel nützlichere Gruppierungen/Ordnungen als die alphabetische Reihenfolge.

Das Sortieren der Variablendeklaration ist normalerweise die falsche Frage. Wenn Ihre Methoden so viele Variablen hatten, dass Sie von der Sortierung ihrer Deklarationen profitieren können, haben Sie die angemessene Längenbeschränkung für eine Methode weit überschritten. Darüber hinaus bedeutet das Sortieren von Variablendeklarationen in den meisten Sprachen normalerweise auch, dass Sie den Wert dieser Variablen nicht inline festlegen können. In fast jedem Code möchten Sie Variablen in einer bestimmten Reihenfolge zuweisen, da der Algorithmus/die Logik die Variablen in dieser Reihenfolge erfordert. Sie können Variablen nicht einfach ohne weiteres neu anordnen, ohne den Code zu ändern. Wenn Sie Regeln zum alphabetischen Sortieren dieser Deklarationen haben, müssen Sie separate Deklarationen und Zuweisungen vornehmen. Dies ist auch ein Styleguide, der nur dann Sinn macht, wenn Ihre Methoden viel größer sind, als sie sein sollten.

2
Lie Ryan

Alphabetisch zu sortieren ist besser als keine Sortierung, aber es gibt keine weiteren Vorteile. Mein Prinzip ist es, nach Zweck zu gruppieren und innerhalb der Gruppe nach der Reihenfolge der Verwendung zu sortieren. Ich verwende dieses Prinzip für alle Arten von Code. Dieses Prinzip folgt normalerweise dem Schreiben von Code und ist einfach und logisch zu lesen.

0
Daniel Vidić

Zusätzlich zu den anderen Vorteilen: Alphabetisch sortierte Importe erleichtern die Suche, ob das richtige Modul importiert wird.

In Java Spring gibt es eine Anmerkung @Component. Vor einigen Wochen habe ich einfach den Namen dieser Anmerkung eingegeben und eine Tastenkombination gedrückt, um den Import hinzuzufügen. Es gab 3 Anmerkungen (!) Mit diesem Namen in verschiedenen Paketen und Bibliotheken von Drittanbietern. Leider habe ich den falschen gewählt und der Code funktioniert nicht.

Da die Importe sortiert und gruppiert wurden, war leicht zu erkennen, was schief gelaufen ist. Angenommen, sie waren es nicht: Wie lange hätte es gedauert, den Fehler zu finden?

0
Claude