Kürzlich stieß ich auf eine Reihe von Open-Source-Ruby- Projekten (oder die meisten davon waren Ruby- Projekte) auf GitHub , die, wenn sie mit einem Code-Analyse-Tool wie Rubocop überprüft wurden, viele Verstöße hervorrufen .
In den meisten Fällen werden doppelte Anführungszeichen anstelle von einfachen Anführungszeichen verwendet (wenn keine Interpolation erfolgt), wenn die Regel mit 2 Leerzeichen pro Ebene nicht eingehalten wird, die 80-Zeichen-Zeilenlänge überschritten wird oder {
und }
für mehrzeilige Blöcke verwendet werden.
[The] Ruby Style Guide empfiehlt Best Practices, damit echte Ruby-Programmierer Code schreiben können, der von anderen echten Ruby-Programmierern verwaltet werden kann. ~ Quelle: Ruby Style Guide
Obwohl sie klein und einfach zu reparieren sind, ist es angemessen, den Codierungsstil eines Open Source-Projekts zu ändern, indem die Verstöße behoben und eine Pull-Anfrage gestellt werden? Ich nehme zur Kenntnis , dass einige Projekte, wie Rails, akzeptieren keine kosmetischen Änderungen und einige sind einfach zu groß , um „fix“ auf einmal (Rails beispielsweise über 80.000 Straftaten erzeugt , wenn Rubocop ausgeführt wird - egal, sie haben ihren eigenen kleinen Satz von Codierung Konventionen , die beim Beitragen einzuhalten sind). Schließlich gibt es den Ruby Style Guide aus einem bestimmten Grund zusammen mit Tools wie Rubocop.
Die Leute schätzen die Beständigkeit, also ist es für die Ruby-Community im Allgemeinen eine gute Sache, solche Änderungen vorzunehmen, oder?
[Die Autoren des Ruby Style Guide] haben nicht aus dem Nichts alle Regeln gefunden - sie basieren hauptsächlich auf meiner langjährigen Karriere als professioneller Softwareentwickler, auf Rückmeldungen und Vorschlägen von Mitgliedern der Ruby-Community und vielen anderen Hoch angesehene Ruby-Programmierressourcen wie "Programming Ruby 1.9" und "The Ruby Programming Language". ~ Quelle: Ruby Style Guide
Befolgen Sie nicht die Konventionen und Best Practices des Community-Coding-Stils, um schlechte Praktiken zu fördern ?
Antworten:
Fragen Sie die Betreuer.
Der Codierungsstil ist eine recht subjektive Diskussion, und Regeln wie die maximale Zeilenlänge von 80 Zeichen sind ziemlich subjektiv - während generell die Meinung vertreten werden sollte, dass kürzere Zeilen besser zu lesen sind, könnten 80 für einige mit den heutigen Bildschirmgrößen und IDEs zu restriktiv sein.
Andere Regeln können auch absichtlich ignoriert werden. Beispielsweise könnte ein Entwickler die globale Verwendung von doppelten Anführungszeichen besser für sich in Betracht ziehen und bereit sein, das "Risiko" einer versehentlichen Interpolation und einer extrem geringen Erhöhung der Parsingzeit in Kauf zu nehmen.
Viele Betreuer mögen auch keine großen Änderungen des Codierungsstils, da die Überprüfung langweilig ist und möglicherweise Fehler auftreten. Beispielsweise kann eine Zeichenfolge in einfache Anführungszeichen geändert werden, obwohl sie eine absichtliche Interpolation enthält und doppelte Anführungszeichen hätte verwenden müssen. Maintainer ziehen es vor, Stilbereinigungen durchzuführen, während sie an diesem eigentlichen Code arbeiten, damit sie überprüfen können, ob Stiländerungen keine neuen Fehler verursachen.
quelle
Sie scheinen vor allem durch den Respekt vor der Autorität des Rubocop-Tools und des Ruby Style Guide motiviert zu sein, die die Betreuer möglicherweise nicht teilen. Sie haben bereits ihren eigenen Stil und sind daran gewöhnt. Jede Änderung wirkt sich auf alle aus, die an dem Projekt arbeiten, und das ist eine Menge Arbeit, insbesondere, wenn das Projekt groß ist.
Bedenken Sie die Motivationen der Betreuer. Sie möchten (wahrscheinlich), dass neue Leute ihnen beitreten, indem sie Bugfixes, Fehlerberichte, Arbeitscode und gut geschriebene Dokumentation einreichen. Wenn du auftauchst und sagst "Du hast Verstöße gegen Rubocop", werden sie nicht denken "Oh gut, jemand, der neu ist, um die Ladung zu teilen", werden sie denken "Wer ist dieser Typ? Warum sagt er uns das?" was ist zu tun?".
Open-Source-Projekte sind in der Regel Leistungsmerkmale: Sie erhalten Respekt basierend auf der Qualität Ihrer Arbeit. Wenn Sie auftauchen und großartige Dinge tun und dann Ihre Stilsorgen ansprechen, werden sie eher zuhören, obwohl sie immer noch Nein sagen könnten. Es gibt eine Open Source-Meldung mit dem Titel "Sprechen ist billig, zeig mir den Code".
quelle
Pragmatismus über Dogma, immer. Coding Style Guides sind eine besonders heimtückische Form des Bösen, die die Aufmerksamkeit von architektonischen Belangen auf leichtfertigen Unsinn wie einfaches / doppeltes Zitieren lenkt. Fragen Sie sich: Macht es wirklich einen Unterschied?
Sie können bis zu einem gewissen Punkt gut sein, aber das zweite Mal, wenn Sie sie mit einer fast religiösen Leidenschaft behandeln, sind Sie zu weit gegangen. Sie sind Richtlinien, Vorschläge, Meinungen, NICHT Fakten.
Sollten sie dann einfach ignoriert werden? Nein, es lohnt sich, die Tools zu verwenden, um sich einen Überblick darüber zu verschaffen, worauf es ankommt, aber nicht mehr.
Es ist ein Wunder, wie oft Junior-Typen die Meinung mit der Wahrheit verwechseln.
quelle
Sie können diese Änderungen nur abrufen, wenn ein offenes Problem zum Beheben der Formatierung vorliegt. Starten Sie andernfalls Ihren eigenen Zweig, und wenn der Autor feststellt, dass mehr Leute Ihren Zweig verwenden, weil er besser lesbar ist. Sie werden in der Filiale selbst zusammengeführt, sind jedoch darauf vorbereitet, Ihre Filiale zu warten, indem sie in Aktualisierungen zusammengeführt und die Formatierung ständig korrigiert werden.
Wenn das Projekt für Sie nicht wichtig genug ist, um Ihre eigene Niederlassung zu unterhalten, dann hat es sich in erster Linie nicht gelohnt, aufzuräumen.
Pull-Anfragen können vom Autor persönlich entgegengenommen werden. Es ist kein Mechanismus, um Kritik zu üben, und eine Neuformatierung des gesamten Codes könnte als Kritik angesehen werden.
Wenn Sie keine eigene Niederlassung unterhalten möchten, aber einen Beitrag zu einem Projekt leisten möchten. Öffnen Sie eine neue Ausgabe und beschreiben Sie, warum das aktuelle Format Probleme verursacht. Bieten Sie dann an, das Problem für den Autor zu lösen. Wenn der Autor zustimmt, wird das Problem Ihnen zugewiesen, und Sie haben jetzt die Berechtigung, eine Pull-Anfrage zu stellen.
Sie haben ein Thema angesprochen, von dem ich ebenfalls überzeugt bin, dass es ein weit verbreitetes Problem bei GitHub ist . Abgesehen von der Formatierung gibt es eine Reihe von Projekten, in denen Anmerkungen falsch verwendet werden und die bei vielen IDEs Chaos verursachen. Ich kann mir drei weitgehend beliebte Projekte vorstellen, bei denen veraltete Flags falsch verwendet werden und die Warnmeldungen in meiner IDE verbreiten. Ich habe Pull-Anforderungen gesendet, um sie zu beheben, aber die Autoren verwenden nicht dieselbe IDE. Daher werden die Pull-Anforderungen ignoriert.
Verzweigen, Zusammenführen und Fixieren scheinen die einzige Lösung zu sein.
quelle
Entnommen aus der Rubocop- Site selbst (Schwerpunkt Mine):
Bitte verstehe:
Es gibt keinen offiziellen Ruby Style Guide
Ich sage nicht, dass Styleguides schlecht sind. Es gibt jedoch nicht nur keinen offiziellen Leitfaden, sondern auch einen Style-Leitfaden, der auf persönlicher, projektbezogener, teambezogener und firmenbezogener Ebene festgelegt wird. Styleguides sind, um einen psychologischen Begriff zu verwenden, eine "soziale Norm innerhalb einer Gruppe".
Was bedeutet das für dich Wenn Sie nicht Teil der Gruppe sind, bedeutet dies, dass Sie - oder eine andere Website - höchstwahrscheinlich keine Einflussnahme auf die Gruppe haben. Wenn Sie also kein aktiver, angesehener Mitwirkender für dieses bestimmte Projekt sind, werden Ihre Vorschläge höchstwahrscheinlich ignoriert oder sind bestenfalls eine Erinnerung an frühere Überlegungen, einen Styleguide zu haben. Im schlimmsten Fall wird es als Beleidigung oder als Eindringling oder Bikeshedder angesehen , der seine Nase dort hineinsteckt , wo es nicht hingehört.
Können Sie nicht einfach einen Style Guide vorschlagen?
Dies scheint genau das zu sein, was Sie tun möchten: Sie glauben an den Wert von Stilrichtlinien, legen großen Wert auf Konsistenz und möchten für das Engagement für einheitliche Stilrichtlinien evangelisieren .
Das ist in Ordnung, solange Sie wirklich klar sind, worum es Ihnen geht und was Sie erreichen wollen. Wenn Sie an einen bestimmten Style Guide glauben und glauben, dass er der einzig wahre Style Guide ist, oder zumindest besser, als was auch immer diese gesetzlosen Heiden beim Üben herumlaufen, dann ist das auch in Ordnung.
Was die Menschen jedoch nicht schätzen, ist die Aussage, dass ihr Verhalten nicht den inoffiziellen, unverbindlichen und weitgehend willkürlichen Regeln entspricht, die aus einer Quelle stammen, die sie nicht als legitime Autorität betrachten. Wenn das, was Sie sich vorgenommen, oder wenn nur das ist , was Sie wahrgenommen zu tun, werden Sie weniger von „der roten Teppich Behandlung“ bekommen, und mehr von den „angry Eingeborene mit Speeren und ein großen Topf mit kochendem Wasser“ Behandlung.
quelle
In vielen Fällen wäre eine solche Änderung zu begrüßen, wenn hier eine andere Meinung vertreten würde. Open-Source-Projekte haben in der Regel viele Autoren. Es gibt oft keinen "Codierungsstil"; Der Stil ist genau das, was die Person verwendet hat, die den fraglichen Code geschrieben hat. Wenn eine Datei von einer anderen Person als eine andere geschrieben wurde, kann sich auch der Stil unterscheiden. Selbst in Projekten, in denen es einen Konsensstil gibt, wird dieser häufig nicht verwendet, es sei denn, sie überprüfen ihn regelmäßig.
Meiner Erfahrung nach ist dies häufig der Fall, wenn jemand einen Code per Pull-Request einbringt, der in Bezug auf den Stil von relativ geringer Qualität ist. Möglicherweise funktioniert der Code jedoch. Unterschiedliche Menschen haben unterschiedliche Ansichten dazu. Einige Personen lehnen es ab, eine Pull-Anfrage zusammenzuführen, es sei denn, der Stil ist gut. Manche Leute kümmern sich nicht darum, solange der Code funktioniert. Einige Leute bevorzugen guten Stil, aber sie wollen die Mitwirkenden nicht mit ein paar Kommentaren abschrecken (ich persönlich fühle mich immer ein wenig schuldig, wenn ich diese Kommentare mache, obwohl ich weiß, dass sie zum Besseren sind) gut von der Codebasis, weil es sich so anfühlt, als würde es den Mitwirkenden abschrecken).
Nehmen Sie also nicht direkt an, dass der Stil, den Sie sehen, der Stil ist, den das Projekt will. Tatsächlich kann dies wahrscheinlich verallgemeinert werden, um generell zu Open Source beizutragen: Nehmen Sie nicht an, dass der Code, den ein Open Source-Projekt hat, der Code ist, den es will .
Sie sollten sich jedoch einiger Dinge bewusst sein:
Einige Leute sind religiös in Bezug auf Stil. Wenn klar wird, dass sie sich nicht rühren wollen, dann kümmere dich nicht darum.
Dies ist ein großes Problem mit dem Fahrrad . Jeder und sein Bruder haben eine Meinung zu diesen Dingen. Das Zusammenführen einer solchen Pull-Anforderung kann daher schwierig sein.
Es kann auch schwierig sein, eine solche Pull-Anforderung zusammenzuführen, da es sehr schnell zu Zusammenführungskonflikten kommt. Grundsätzlich immer dann, wenn sich ein Teil der Codebasis, die Sie geändert haben, ändert, auch wenn dies auf triviale Weise geschieht.
Ich würde bei dem "zuerst fragen" -Ansatz bleiben. Wenn sie dafür offen sind und Sie bereit sind, die Pull-Anforderung bis zur Fertigstellung beizubehalten, dann versuchen Sie es.
quelle
Früher hatte ich große Vorliebe für einen guten Styleguide, aber angesichts des Sachverhalts in Ruby: "Ich bin weitergegangen".
Grundsätzlich lebe ich mit dem, womit ich arbeite, und befolge ansonsten die allgemeinen Konventionen, die ich aus einer Reihe von Jobs gelernt habe.
Für Ruby, die Sprache meiner Wahl, habe ich (in meinem Kopf) den Stil in allgemein akzeptierte, allgemein akzeptierte, meine Vorlieben und Best Practices unterteilt. Allgemein akzeptierte Dinge Ich kann eine Änderung als Teil einer Änderungsanforderung für ein Problem oder eine Feature-Verzweigungsanforderung einreichen.
Beispiele für jeden Stil (meiner Meinung nach):
Universell akzeptiert für Ruby:
Allgemein anerkannt:
{ }
für einzeilige Blöcke unddo end
für mehrzeilige Blöcke.cond ? true : false
),if then
wenn der Ausdruck in eine Zeile passt.Persönliche Vorlieben:
when
Anweisungen werden 2 aus der case-Anweisung eingerückt.Keine Einigung:
Best Practices:
Schließlich sollten Sie, wie andere ausführlich dargelegt haben, zuerst fragen. Letztendlich ist der Schlüssel zum Stil die Kommunikation zwischen Entwicklern und die Sensibilität für andere. Wenn ich beispielsweise in einem Open Source-Projekt eine Stiländerung vornehmen möchte, werde ich häufig zuerst eine Pull-Anfrage für ein oder zwei aktuelle Features oder Fehlerbehebungen durchführen. Sobald der Betreuer mich kennt und sieht , dass ich dazu beigetragen habe, dann könnte ich Stil Änderungen vorschlagen. Ich schlage sie aber nur vor . Beispiel: "Bei der Ausführung einer anderen Funktion in Projekt x ist mir aufgefallen, dass in einigen Dateien vier Leerzeichen eingerückt sind, und ich habe mich gefragt, ob ich sie in 2 ändern kann."
quelle
Kurz gesagt, nein!
Natürlich gehe ich hier davon aus, dass dies nur eine Frage des Stils ist und keine wirklichen Fehler sind - Pull-Anfragen für letztere wären immer sinnvoll (IMO.) Ich gehe auch davon aus, dass Sie ein Fremder für das Projekt sind und nicht in Kontakt mit den Menschen, die es bereits pflegen.
In jeder Sprache gibt es jedoch immer einige Leute, die ihre Vorlieben haben, die sich vom Styleguide unterscheiden, und versuchen, diese Stiländerungen bei Leuten durchzusetzen, die Sie nicht kennen , und bei einem Projekt, an dem Sie nicht beteiligt sind von wenn sonst nichts etwas unhöflich rüberkommen könnte. Schließlich - was erreichen Sie (in Wirklichkeit), wenn die Anfrage angenommen wurde? Wenn die Mitglieder eines Projekts den Stil in etwas anderes ändern wollten, hätten sie dies aller Wahrscheinlichkeit nach bereits getan - und alles, was Sie mit dieser Anfrage tun würden, ist, ihnen einen Stil aufzuzwingen, der nicht unbedingt besser funktioniert für die bestehenden Mitglieder.
Dies ändert sich geringfügig, wenn Sie bereit sind, auf andere Weise zum Projekt beizutragen als mit Stilkorrekturen. Ich würde sagen, wenn Sie mit den Betreuern einen Dialog darüber eröffnen möchten, wie Sie an dem Projekt arbeiten möchten, aber einen nicht standardmäßigen Stil schwierig finden, dann ist das in Ordnung. Aber ich würde nicht einfach blind Pull-Anfragen für eine Reihe von Projekten erstellen, die nur Stiländerungen enthalten!
quelle
JEDE Änderung kann zu Fehlern führen, selbst wenn die typografische Formatierung des Codes geändert wird.
Daher sollten keine Änderungen am Code vorgenommen werden, es sei denn, es liegt ein gültiger Geschäftsfall vor, und "der Code sieht jedoch nicht gut aus" oder "der Code entspricht nicht den Codierungsstandards" ist kein gültiger Geschäftsfall. Das Risiko ist einfach zu groß.
Wenn Sie jetzt ohnehin größere Änderungen an einer Quelldatei vornehmen, ist es möglicherweise akzeptabel, die gesamte Datei in Übereinstimmung mit den Standards zu ziehen. In diesem Fall ist es jedoch höchstwahrscheinlich vorzuziehen, Ihre eigenen Änderungen beizubehalten mit dem vorhandenen Code übereinstimmen, obwohl dieser vorhandene Code nicht den Codierungsstandards entspricht.
Heck, könnte der Code das Ergebnis eines Code-Generators sein und manchmal neu generiert werden. Codegeneratoren sind dafür berüchtigt, hässlichen Code zu produzieren ...
quelle
Ich habe ein paar mäßig erfolgreiche .NET-Projekte und einige PRs von Leuten, die anscheinend den Code mit ReSharper und StyleCop durchgearbeitet und einige Dinge "repariert" haben. Ich akzeptiere diese PRs aus mehreren Gründen nicht:
Das heißt, wenn jemand eine bessere Fehlerprüfung oder Dokumentenkommentare hinzufügen möchte, würde ich diese PR sofort akzeptieren.
quelle
Sie müssen herausfinden, ob die Betreuer diese Verstöße gegen den Codierungsstil für einen Defekt halten oder ob das Projekt einen anderen Standard für den Codierungsstil hat.
Wenn es einen anderen Standard hat, können Sie anbieten, ihn zu dokumentieren oder zu formalisieren. Dann könnte sich herausstellen, dass es einige Verstöße gegen diesen Stil gibt, und Sie könnten diese beheben.
quelle