Für diejenigen von uns, die genug programmiert haben, bin ich sicher, dass wir auf viele verschiedene Arten von Codierungsstandards gestoßen sind, die Sie verwenden können, wenn es um das Programmieren geht.
z.B. Ссылка
Sie können Ihre Codierungsstandards für das aktuelle Unternehmen, für das Sie arbeiten, oder den ursprünglichen Autor des Codes, an dem Sie arbeiten, ableiten. Codierungsstile werden häufig für bestimmte Programmiersprachen verwendet, und einige Stile in einer Codiersprache werden für andere möglicherweise nicht als geeignet erachtet. Natürlich können einige Codierungsstandards in vielen verschiedenen Programmiersprachen angewendet werden.
Danke für Ihre Zeit.
EDIT: Wie wir wissen, gibt es viele verwandte Artikel zu diesem Thema, aber C # Kodierungsstandard / Best Practices in SO haben einige sehr nützliche Links, die einen Besuch wert sind. (Überprüfen Sie die 2 Links auf .NET / C # -Richtlinien von ESV - Accepted Answer)
Google hat einen Stilleitfaden für C ++ hier , den ich manchmal konsultiere. Lediglich das Lesen der Erklärungen und Überlegungen, auch wenn Sie mit einigen der Stile übereinstimmen oder nicht, kann Ihnen einige Dinge beibringen, an die Sie vielleicht nicht gedacht haben.
Mein bester Rat in Bezug auf Kodierungsstandards: Lassen Sie sie nicht in die Quere kommen, wenn Sie versuchen, Arbeit zu erledigen.
Eine große Bürokratie könnte den Fortschritt in Projekten behindern, anstatt zu einer besseren Teamarbeit beizutragen. Wenn Leute sich beschweren, dass sie nicht die Kodierungsstandards anstelle der tatsächlichen Qualität des Codes befolgen, dann ist es zu viel Regulierung.
Anderenfalls wählen Sie einen aus den vielen Vorschlägen und versuchen so lange wie möglich dabei zu bleiben, um eine Codebasis zu erstellen, die einem einzigen Standard folgt, den Sie gewohnt sind.
Kodierungsstandards sind gut, aber von Grund auf neu geschriebene Kodierungsstandards, in denen das Unternehmen das Rad neu erfindet, oder Kodierungsstandards, die von einem einzigen "Propheten" auferlegt werden, können schlimmer sein als überhaupt keine Kodierungsstandards.
Dies bedeutet:
Die Quellen, die ich für die Sprachen in Ihren Tags kenne, sind:
Kodierungsstandards sind großartig. Wir haben Lance Hunts C # -Kodierungsstandards für .NET fast ohne Modifikationen verwendet
Wenn Sie Code pflegen, der weiterhin denselben Standard verwendet wie der ursprüngliche Code (es gibt nichts Schlimmeres, als ein Problem zu debuggen, wenn der Code higgildy piggeldy aussieht)
Einige Kommentare zum Beitrag, die einen Blick auf die Google C ++ - Richtlinien werfen. Detaillierte Diskussionen zu einigen Aspekten dieser Richtlinien finden Sie unter comp.lang.c ++. Moderiert .
Einige seltsame oder kontroverse Punkte sind:
Wir glauben nicht, dass das zur Verfügung steht Alternativen zu Ausnahmen, wie z Fehlercodes und Assertionen, einführen eine erhebliche Belastung.
Als ob Assertionen eine brauchbare Alternative wären ... Behauptungen sind normalerweise für Programmierfehler und Situationen gedacht, die niemals passieren sollten, während Ausnahmen im Ausführungsfluss vorkommen können (etwas erwartet werden).
Referenzargumente: Alle Parameter per Referenz übergeben werden muss beschriftet sein const. ... In der Tat ist es sehr stark Konvention, dass Eingabe Argumente sind Werte oder const Referenzen während Ausgabeargumente sind Zeiger.
Kein Kommentar, über Weasel Phrase eine sehr starke Konvention .
Arbeit in Konstruktoren: Nur tun triviale Initialisierung in a Konstrukteur. Wenn möglich, verwenden Sie eine Init () - Methode für nicht-trivial Initialisierung. ... Wenn dein Objekt erfordert nicht-triviale Initialisierung, Betrachten Sie eine explizite Init () Methode und / oder Hinzufügen eines Mitgliedsflags das zeigt an, ob das Objekt war erfolgreich initialisiert.
Ja ... 2-phasige Initialisierung, um Dinge einfacher zu machen ... Was passiert, wenn ich const
Felder habe? Diese Regel ist wahrscheinlich die Auswirkung der Einstellung gegenüber Ausnahmen.
Streams nur für die Protokollierung verwenden
Welche Streams? IOStreams, Standard-C-Streams, andere?
Auf der einen Seite empfehlen sie, Makros nur in Ausnahmesituationen zu verwenden, während sie die Verwendung von DISALLOW_COPY_AND_ASSIGN empfehlen, um das Kopieren / Zuweisen zu verhindern. Sie könnten den Ansatz mit einer speziellen Klasse (wie in Boost) empfohlen haben
Überlasten Sie die Operatoren nur in seltenen Ausnahmefällen.
Was ist mit der Zuweisung oder arithmetischen Operatoren für numerische Berechnungen usw.?
Standardparameter sind schwieriger zu pflegen, weil Kopieren und Einfügen aus vorherigem Code zeigt möglicherweise nicht alle Parameter an. Kopieren-und- Das Einfügen von Codesegmenten kann zu schwerwiegenden Problemen beim Standard führen Argumente sind für den neuen Code nicht geeignet.
Was? Kopieren / Einfügen aus dem vorherigen Code?
Denken Sie daran, dass das Lesen einer der Richtlinien zu einer Verzerrung Ihrer Denkweise führen kann. Und manchmal ist es nicht vorteilhaft für Sie oder Ihren Code. Ich stimme einigen anderen Beiträgen zu, die empfehlen, gute Bücher vorher von guten Autoren zu lesen. Wenn Sie genügend Wissen haben, können Sie sich die Richtlinien ansehen und leicht gute und schwache Punkte finden, ohne ein Chaos in Ihrem Gehirn zu verursachen;)
Wenn Sie vorhaben, einen Code-Formatierungsstandard in ein bestehendes Programmierteam einzuführen, sollten Sie von jedem Teammitglied Informationen erhalten, damit diese sich "einkaufen" und mit größerer Wahrscheinlichkeit Code für diesen Standard schreiben.
>Programmierstile sind genauso schwer zu ändern wie Gewohnheiten, und Sie müssen akzeptieren, dass manche Leute ihren Code nicht 100% ig zu 100% konform machen. Es wäre Ihre Zeit wert, Ihr Pretty-Printer-Programm zu finden (oder Ihr eigenes Programm zu schreiben) und regelmäßig Ihren gesamten Code durchzulaufen, um die Konsistenz zu gewährleisten. (Ich fühlte mich immer unwohl, wenn ich manuell Quellcodeänderungen eincheckte, die nur aus Formatierungskorrekturen für den Code anderer Leute bestanden; ich machte mir Sorgen, dass andere mich als Nitpicker bezeichnen würden.)
Nachdem Sie diese Frage gestellt haben . Ich fand, dass die akzeptierte Antwort für meine Bedürfnisse ausreichend war.
Ich stelle jedoch fest, dass dies kein einheitliches Szenario ist. Es gibt also eine große Menge an Informationen innerhalb des Threads, die Sie mehr oder weniger nützlich finden. Weel lesenswert!
Für Java und andere Sprachen der C-Familie empfehle ich Sofware Monkey's Kodierungsstandards (natürlich, da sie mir gehören) ).
Halten Sie sie im Allgemeinen einfach und liefern Sie Beispiele und Begründungen für jede Anforderung.
Was im Standard ist, spielt nicht wirklich eine Rolle. Was zählt ist, dass Sie einen haben und dass Ihre Entwickler ihm folgen.
Es beantwortet die Frage nicht ganz, aber es ist erwähnenswert ...
Ich habe Steve McConnells Code Complete gelesen. Es gibt zwar keine vorgefertigten Codierungsstandards, aber es gibt viele gute Argumente für die verschiedenen Ansätze. Es wird dich über Dinge nachdenken lassen, an die du vorher nicht gedacht hast.
Es hat meine kleine Welt zum Besseren verändert.
Coding-Standards selbst sind großartig und alles, aber was ich denke, ist viel, viel, viel wichtiger ist es, mit dem Stil des Codes, den Sie pflegen, zu bleiben. Ich habe gesehen, wie Leute einer Klasse eine Funktion in einer Richtung hinzufügen und ihren Codierungsstandard nur für diese Funktion erzwingen. Es ist widersprüchlich, es steht heraus, und es macht es meiner Meinung nach schwieriger, die Klasse "als Ganzes" zu genießen.
Wenn Sie Code pflegen, sehen Sie sich den Code an. Schau, was der Stil ist. K & amp; R-Hosenträger? Capital Camel Case-Methoden? Ungarisch? Zweizeilige Kommentarblöcke zwischen jeder Funktion? Was auch immer es ist, sollten Sie es auch in diesem speziellen Bereich tun.
Bevor ich gehe, möchte ich eine Sache erwähnen, die damit zusammenhängt - Benennen von Dateien. Ich bin hauptsächlich ein C ++ - Typ, also mag das nicht für was auch immer gelten, aber im Grunde geht es _.h oder .cpp. Also wäre Foo :: Bar in Foo_Bar.h. Übliche Dinge (d. H. Ein vorkompilierter Header) für den Foo-Namespace wären in Foo_common.h (beachte den Kleinbuchstaben). Natürlich ist das Geschmackssache, aber alle, die damit gearbeitet haben, haben sich dafür ausgesprochen.
Ich denke Code Craft - Die Praxis des Schreibens von Excellent Code fasst es ziemlich gut zusammen
Die Antworten hier sind ziemlich vollständig, so dass ich nicht auf ein anderes Coding-Standarddokument hinweise. Sobald Sie jedoch beschlossen haben, bei einem Stil zu bleiben, sollten Sie einen automatischen Codierungsstil-Enforcer in Ihrem Team verwenden.
Für Java gibt es checkstyle und für .NET Microsoft Style Cop .
Hier finden Sie eine ähnliche Diskussion über Stackoverflow: C # Coding-Standard / Best Practices
Camel und Pascal Casing allein lösen viele Probleme mit dem Coding-Standard
Tags und Links .net c# c++ coding-style