Ich weiß, dass es erwiesen ist, dass ein Kodierungsstandard enorm hilft. Es gibt jedoch viele verschiedene Tools und IDEs, die nach dem vom Programmierer bevorzugten Standard formatiert werden. Solange der Code ordentlich / kommentiert ist (und kein Spaghetti-Chaos), sehe ich keine Notwendigkeit für einen Kodierungsstandard.
Gibt es Argumente für die Entwicklung eines Codierungsstandards (wir haben keinen, aber ich habe versucht, einen zu erstellen)?
coding-standards
ide
SomeKittens
quelle
quelle
Antworten:
Viel Glück damit. Meiner Erfahrung nach gibt es eine kleine Anzahl von Tools (Null!), Die den Code von Format X in Format Y korrekt formatieren können. Es gibt einfach zu viele Dinge, die im Weg stehen. Tabulatoren gegen Leerzeichen, mehrzeilige Anweisungen usw. Schauen Sie sich nur die Implementierung der C ++ - Standardbibliotheksdateien durch GNU an. Was Sie tun können, ist, Ihre IDE dazu zu bringen, immer Leerzeichen anstelle von Tabulatoren zu verwenden und sich nur nicht darum zu kümmern, fremden Code neu zu formatieren. Jetzt sieht Ihr Code so aus, wie Sie ihn mögen, und der fremde Code sieht so aus, wie der ursprüngliche Autor ihn geschrieben hat.
Ein bestimmter Einrückungsstil ist das Letzte, was ein Codierungsstandard spezifizieren sollte. Das steht kurz davor, einen Religionskrieg zu programmieren. IMO, ein Codierungsstandard, sollte eine angemessene Reihe akzeptabler Einrückungsstile festlegen, die Einzelheiten jedoch den Autoren eines Pakets überlassen. Einrückungsstil ist oder sollte ein winziger Teil eines Codierungsstandards sein. Regel Nummer Null der Kodierungsstandards: Schwitzen Sie nicht an den kleinen Dingen. Einrückungsstil ist eine kleine Sache.
Größere Dinge:
Nachtrag
Vielleicht noch wichtiger ist, was man nicht in einen Kodierungsstandard einfügt. Themen wie das Schreiben von Anforderungen gehören nicht zu den Kodierungsstandards. Details zum Testen gehören auch nicht dazu. Ein Projekt sollte die Codierungsstandards nicht als Ersatz für den Projektmanagementplan, den Testmanagementplan, den Überprüfungs- und Validierungsplan usw. verwenden. Das Ziel der Codierungsstandards besteht darin, die Codesicherheit, Qualität, Verständlichkeit, Wartbarkeit, und andere "Fähigkeiten". Es gibt viele Möglichkeiten, um sicherzustellen, dass dies nicht geschieht. Nur ein paar: Die Standards zu einem Buch zu machen, das so komplex ist wie die Steuergesetze eines Landes, Religionskriege zu programmieren und schlechte Namenskonventionen zu haben.
Codierungsstandards können unbeabsichtigte Folgen haben. Beispiel: Einige Narren Projektingenieur wird die „keine magischen Zahlen regieren“ bedeuten , dass zu interpretieren
if (index == 0) {...}
undfor (ii = 0; ii < 3; ++ii) {...}
geändert werden mussif (ZERO == index) {}
undfor (ii = ZERO; ii < NUMBER_OF_DIMENSIONS_IN_THE_UNIVERSE; ++ii) {...}
nicht lachen. Ich habe es gesehen. Wenn ich heutzutage einen Kodierungsstandard schreibe, ist dies eher eine "Richtlinie ohne magische Zahlen" als eine Regel, um dieser Art von Dummheit entgegenzuwirken.Der Kodierungsstandard ist nicht die Verteidigung Nummer eins gegen schlechten Programmierstil / gefährliche Kodierungspraktiken. Die Codeüberprüfung ist. Trotz jahrelanger Automatisierung gibt es nichts Schöneres, als einen Teil des Codes mit einem etwas subjektiven menschlichen Blick zu betrachten und zu beurteilen.
quelle
Bei Codierungsstandards geht es nicht nur um die bevorzugten Parameter,
indent
sondern auch um Namenskonventionen, Kommentarkonventionen und eine Vielzahl möglicher Empfehlungen für Redewendungen, die Verwendung von Sprachfunktionen usw.Um es auf den Punkt zu bringen, müssen Sie das alles noch irgendwo dokumentieren. Und schließlich möchte nicht jeder eine IDE verwenden, die Code auf diese Weise neu formatiert ...
quelle
Wenn Sie innerhalb eines Teams einen einheitlichen Stil verwenden, ist Ihr Code leichter zu lesen. Wenn Ihr Code leichter zu lesen ist, ist Ihr Team produktiver. Sie sind produktiver, weil sie den Code nicht mental analysieren müssen und sich bei der Überprüfung und Pflege des Codes eher auf die Logik als auf die Syntax konzentrieren können.
Wenn die IDE den Code von jeder Person neu formatieren lässt, haben Sie eines von zwei Problemen: Entweder müssen Sie sicherstellen, dass Sie ihn beim Speichern immer wieder in das ursprüngliche Format konvertieren, oder Sie leiden unter der Tatsache, dass Ihre Diffs viel Rauschen zeigen. Dadurch wird es schwieriger zu erkennen, was sich in der Logik des Codes geändert hat.
quelle
Kurze Antwort: Ja, es spiegelt die Qualität wider .
Was ist es und warum brauchen wir es?
Codierungsstandards sind ein sehr wichtiges Stück hochwertiger Software. Sie steigern die Produktivität im Entwicklungsprozess, vereinfachen die Pflege des Codes und verhindern, dass der Code an eine Person oder ein Team gebunden ist. Konsistenz im Codierungsstandard unterscheidet auch vorzeitig erstellten Code von gut gemachter Kunst.
Es wird hauptsächlich vom Verkäufer bestimmt, dem das Produkt gehört. Jeder Entwickler kann aus vielen branchenüblichen Codierungsstandards auswählen. Einige Unternehmen, Microsoft, Oracle und Sun Microsystems, bieten Richtlinien an.
Ja, es gibt Industriestandards, deren Verwendung empfohlen wird. Jeder Codierungsstandard ist jedoch spezifisch für die Entwicklungsplattform. Daher sind Codierungsstandards meist sprachspezifisch. Beispielsweise hat Java einen anderen Standard als .NET. Zum Beispiel verwendet C # .NET diese Standards in dieser Referenz .
Gemeinsame Standards
Die gängigen Standards sind von keiner Programmiersprache abhängig. Zusätzlich zu den vom Hersteller angebotenen Standards, auch bekannt als Industry Coding Standards, gibt es verschiedene Programmiernotationen wie Ungarische Notation oder CamelCase . Ich denke, Microsoft .NET-Codierungsstandards basierten ursprünglich auf CamelCase-Notationen.
Team Kodierungsstandards und Richtlinien
In think sollte sich jedes Entwicklungsteam bei Projektstart auf Kodierungsstandards einigen. Die Kodierungsrichtlinien werden normalerweise vom Teamleiter oder Chefarchitekten des Unternehmens erstellt. Es ist normalerweise ein offenes Dokument, das befolgt und bei Bedarf verbessert werden muss. In unserem Unternehmen gibt es beispielsweise Wiki-Seiten, auf denen dieses Dokument hochgeladen und für die Entwickler des Unternehmens verfügbar ist.
quelle
While Not
sollte total a seinDo Until
.Ich werde die kontroverse Meinung vertreten und nein sagen, Sie brauchen keinen Kodierungsstandard . Entweder sind die Regeln, wie Sie sagen, IDE-durchsetzbare Richtlinien, allgemeine Best Practices, die jeder in jedem Unternehmen befolgen sollte, oder es handelt sich um Fall-zu-Fall-Entscheidungen pro Team, die von mehr als einer Person in einem fähigen Team getroffen werden sollten über Paarprogrammierung oder Code-Reviews.
Dinge wie Wie sollen wir diese Variable benennen? Welche Sprachfunktionen sollten wir verwenden? Sollten wir vermeiden? Welches Testen ist am besten? Diese bleiben am besten unbeantwortet, bis wir auf das eng umrissene Problem stoßen, an dem wir gerade arbeiten .
Aus diesen winzigen Entscheidungen können sich informelle Standards / Muster innerhalb der Teams ergeben, die auf der Überschneidung mit dem aktuellen Problembereich und den verwendeten Technologien beruhen. Die Kodierung bedeutet, dass wir der Meinung sind, dass Dinge wie der Benennungsstandard, die geeignete Sprachuntermenge usw., die für diese Projekte verwendet werden und auf Hunderten von Mikroentscheidungen basieren und von diesen Teams informell übernommen werden, die Grundlage für jedes weitere Projekt bilden sollten.
Im Prinzip klingt es wie eine großartige Sache, aber in Wirklichkeit wird es nur ein Magnet für die Politik. Welche Tools können wir jeden zum Einsatz zwingen? Was möchte ich andere Menschen zwingen, zu vermeiden? Wenn sich alle auf diese Fragen einigen würden, bräuchten wir keinen Standard. Wir würden es einfach tun. Meiner Erfahrung nach entspringen Standards dem Wunsch, dass eine Teilmenge der Entwickler die Kontrolle über eine andere Teilmenge ausübt. Typischerweise erstickt diese Art von Politik und die darauf folgende technologische Polizeiarbeit Innovationen, anstatt sie anzuleiten.
Wenn Sie echte Anleitung benötigen , anstatt einen Standard mit einer Reihe von nicht hilfreichen Regeln zu lesen, suchen Sie nach fähigen Mitgliedern Ihres Teams und fragen Sie sie, was sie denken. Wovon wurden sie verbrannt? Wie schlagen sie vor, dass Sie Code schreiben? Sie erhalten eine Vielzahl nützlicher Antworten mit vielen wertvollen Erfahrungen, um diese zu sichern. Sie werden eine Menge Überschneidungen sehen, die auf gemeinsamen Erfahrungen basieren. Anstelle der durch den Standard erzwungenen Monokultur werden Sie auch eine große Vielfalt feststellen, die Ihnen nur helfen kann, viele gültige Wege zur Lösung von Problemen zu finden.
Und wenn jemand Ihnen sagt, dass Sie keine Regelgrundlage im "Standard" haben sollen, aber keine Erfahrung oder angemessene Unterstützung für ihre Behauptung haben, ignorieren Sie sie. Hier hat der Standard niemandem geholfen oder jemanden zu einem besseren Entwickler gemacht.
quelle
Jetzt, da kommerzielle Flugzeuge Fly-by-Wire sind, würden Sie hoffen, dass die Programme, die das Flugzeug fliegen, auf der Grundlage der Piloteneingabe funktionieren. Wenn die Programmierer solchen Code schreiben, hoffen Sie, dass sie sich an strenge Regeln halten, um häufig vermeidbare Programmierfehler zu vermeiden. Ein Weg, dies zu tun, ist mit einem Kodierungsstandard.
Siehe: Vorgeschlagene Codierungsstandards für C und C ++ der Federal Aviation Administration
Muss ich mehr sagen.
Hinweis: Ich konnte den aktuellen Standard von der FAA online nicht finden, habe ihn aber gesehen.
quelle
Für mich ist es eine Frage der Disziplin und es hilft immer, diszipliniert zu sein. Es spiegelt die Qualität Ihrer Arbeit wider.
Allerdings würde ich den Kodierungsstandard so gestalten, dass die verwendete IDE und / oder die verwendeten Tools im Blick bleiben. Darüber hinaus sollte die IDE für jeden Entwickler identisch konfiguriert sein (z. B. sollte die IDE jedes Entwicklers entweder alle Tabulatoren oder alle Leerzeichen zum Einrücken verwenden und die IDE jeder sollte dieselbe Tabulatorenlänge haben), damit jeder dem Standard problemlos folgen kann ...
Es könnten auch Check-In-Skripte entwickelt und verwendet werden, die in gewissem Umfang dazu beitragen können, die Kodierungsstandards einzuhalten, z.
quelle
Codierungsstandards könnten NICHT wichtiger sein! Ich bin ein begeisterter CakePHP-Benutzer und überprüfe gerne die Änderungssätze von Version zu Version, und die Entwickler befolgen dort keine Standards.
Tatsächlich war ich von den Stilunterschieden so verärgert, dass ich einen kurzen Rant über Kodierungskonventionen schreiben musste . Es kostet viel Zeit und Geld, neue Entwickler in ein bestehendes Team zu holen. Stellen Sie sich vor, Sie bringen einen neuen Entwickler ohne Standards auf den Markt. Das Erlernen des Codes wäre als nächstes zu unmöglich.
quelle