Ich arbeite derzeit an einem Ort, an dem Entwickler möglicherweise gezwungen werden, beim Einchecken in die Versionskontrolle einen automatisierten Code-Formatierer zu verwenden. Ich bin auf der Suche nach Meinungen von Entwicklern zu den Vor- und Nachteilen, die dies mit sich bringt. Wie würden Entwickler davon profitieren oder behindern? In meinem speziellen Fall geht es um Java / JSPs, aber ich denke, die Frage könnte für jede Sprache gelten.
java
formatting
coding-standards
Nerdfest
quelle
quelle
Antworten:
Ich denke, es ist sehr wichtig, dies zu tun. Hier ist der Grund:
Wenn Sie das tun, würde ich jedem empfehlen, den gesamten Code einzuchecken, dann eine Person, die eine Neuformatierung über die gesamte Codebasis durchführt, und dann alles wieder eincheckt, damit es eine "riesige" Änderung für die Formatierung gibt (die jeder ignorieren kann), aber Danach sind alle Unterschiede echte Code-Unterschiede.
Wenn Sie es Stück für Stück tun, werden Sie echte Codeänderungen mit Formatierungsänderungen mischen und die Dinge werden im Änderungsland unnötig chaotisch.
quelle
Ich werde meine eigene Antwort hier werfen, da die Leute nur Vorteile hinzuzufügen scheinen. Was ich als Nachteile sehe, sind:
Einfach ausgedrückt, ein nicht automatisierter Satz von Konventionen legt minimale Anforderungen an Stil und Lesbarkeit fest, wobei automatisierte Konventionen ein Minimum und ein Maximum festlegen.
Ich erinnere mich, dass ich mir VB (vielleicht Version 5) angeschaut habe und eines der nervigsten Dinge dabei war, dass es meinen Code gewaltsam neu formatierte und Dinge entfernte, die über seine grundlegende Formatierung hinausgingen.
quelle
Ich finde, dass erzwungene Code-Formatierung großartig ist. Es ermöglicht einem Entwickler, den gesamten Code-Korpus zu durchlaufen, ohne dass seine Augen überall aufspringen. Auch wenn dieser Standard vorhanden ist, können unerfahrene Entwickler schlechte Gewohnheiten brechen.
quelle
Der Hauptnachteil ist der Verlust der benutzerdefinierten Formatierung, wenn es darauf ankommt.
Stellen Sie sich eine typische Überprüfung vor, wenn () fehlschlägt, wenn eine der spezifischen Bedingungen vorliegt, aber nicht erfüllt ist ...
Dies ist dank vernünftiger Einrückung nach der logischen Struktur der Bedingungen lesbar.
Jetzt hat Ihr automatisiertes Tool keine Ahnung mehr über die logische Trennung verschiedener Bedingungen in verwandte Zeilen. Es sieht keinen Grund, warum jeweils 3-4 Bedingungen in einer Zeile zusammengefasst und die nächste Bedingung in zwei Hälften geteilt werden. Oder es wird aufgeteilt, ein Vergleichsausdruck pro Zeile. Es mag auf dem Bildschirm noch hübscher aussehen, aber die Logik geht verloren.
quelle
Ich habe eine Antwort mit Nachteilen hinzugefügt, und ich werde auch das einbringen, was ich für einen großen Vorteil halte.
Wenn Sie beim Festschreiben eine automatisierte Code-Neuformatierung verwenden, besteht tatsächlich die Möglichkeit, dass die persönlichen Präferenzen variieren, ohne dass dies den üblichen Effekt hat, dass Ihre Präferenzen anderen zugefügt werden. Sie können Ihren IDE-Formatcode nach einem gemeinsamen Standard für das Festschreiben festlegen, ihn jedoch in Ihrem bevorzugten Format anzeigen, ohne andere zu beeinträchtigen.
Für mich ist dies fast der heilige Gral des konventionellen Codierens. Sie erhalten die Vorteile eines gemeinsamen Codeformats, können aber trotzdem persönliche Präferenzen ohne Konflikte unterstützen.
quelle
Es hängt von Ihren Bedürfnissen ab, aber einige Einschränkungen sind sehr hilfreich, z. B. sollte hinter jedem if () eine geschweifte Klammer stehen, da es beim Refactoring recht einfach ist, ein solches wenn falsch zu verstehen.
Betrachten Sie diesen Fall:
Wenn Sie jetzt etwas Protokollierung zum if-Fall hinzufügen möchten, schreiben Sie möglicherweise versehentlich:
Und plötzlich kehrt Ihre Methode immer zurück
foo
.Bearbeiten: Dies ist keine automatische Formatierung, sondern eine Stilüberprüfung. Tut mir leid, wenn diese Antwort ebenfalls nicht zum Thema gehörte. :)
quelle
Es ist sehr hilfreich, den Code im Unternehmen zu vereinheitlichen, und dank dessen erzielen Sie im Allgemeinen eine leichter verständliche und leichter zu wartende Struktur für Ihr Produkt.
quelle
Nun, die Vorteile sind dieselben wie bei jedem Code-Formatierer, wie Standardisierung des Codes, Semantik zwischen Entwicklern usw. Die einzigen möglichen Nachteile, die ich sehe, sind das Fehlen eines menschlichen Auges nach der Formatierung, um einige Ausnahmen hinzuzufügen usw.
Also ich Vermutlich ist ein IDE-Formatierer besser als ein Formatierer für die Eincheckzeit.
quelle
Nach meiner Erfahrung ist es eine gute Sache. Ohne eins zeigen Code-Vergleiche oft ein Durcheinander der Whitespace-Formatierung und können tatsächliche Codeänderungen verbergen. Meiner Erfahrung nach ist es keine Sünde, mit der Formatierung einer Person herumzuspielen, vor allem was die potenziellen Vorteile der Konsistenz im gesamten Team angeht.
quelle