Gibt es irgendwelche Vorschläge für die Entwicklung eines C# - coding-standards / best practices-Dokument?[geschlossen]

StackOverflow https://stackoverflow.com/questions/14967

  •  08-06-2019
  •  | 
  •  

Frage

Ich bin eine neuere AI graduate (etwa 2 Jahre) arbeiten für einen einfachen Betrieb.Es gefallen hat mir (vor allem als ich den ersten 'adopter' in der Abteilung) erstellen Sie eine einfache (Lesen Sie nützliche?) C# - Codierung standards Dokument.

Ich denke, ich sollte erklären, dass ich wahrscheinlich die meisten junior-software-Ingenieur gehen, aber ich freue mich auf diese Aufgabe, wie ich hoffe, dass ich vielleicht tatsächlich in der Lage sein, etwas zu produzieren die Hälfte nutzbar.Ich habe eine ziemlich ausführliche recherche im Internet und Lesen Sie Artikel über das, was eine Codierung standards Dokument sollte / sollte nicht enthalten.Dies scheint wie ein guter Ort wie jeder zu Fragen, für einige Vorschläge.

Ich merke, dass ich möglicherweise das öffnen einer Tür zu einer ganzen Welt von Meinungsverschiedenheiten über den besten Weg, Dinge zu tun'.Ich verstehe und respektiere die unbestreitbare Tatsache, dass jeder Programmierer hat eine bevorzugte Methode der Lösung jeder einzelnen Aufgabe, als ein Ergebnis, ich bin nicht auf der Suche, etwas zu schreiben, so draconianly proscriptive zu ersticken persönliches flair, sondern zu versuchen, eine Allgemeine Methodik und-standards (z.B.Namenskonventionen) um zu helfen, machen Personen, den code besser lesbar.

So, hier geht ....irgendwelche Vorschläge?Überhaupt?

War es hilfreich?

Lösung

Wir beginnen mit

und dann dokumentieren Sie die Unterschiede und Ergänzungen zu dieser Grundlinie.

Andere Tipps

IDesign hat ein C# - Codierung standards Dokument, das Häufig verwendet wird.Siehe auch Framework Design Guidelines, 2nd Ed.

Ironischerweise Einstellung des aktuellen standards sind wahrscheinlich der einfache Teil sein.

Mein Erster Vorschlag wäre, zu entlocken Vorschläge von den anderen Ingenieuren über das, was Sie fühlen sollte abgedeckt werden und welche Richtlinien Sie fühlen, sind wichtig.Durchsetzung jeglicher Art von Richtlinien erfordert ein gewisses Maß an buy-in von Menschen.Wenn Sie plötzlich fallen einem Dokument auf Ihnen, die angibt, wie code zu schreiben, werden Sie auf Widerstand stoßen, ob Sie die junior oder senior guy.

Nachdem Sie eine Reihe von Vorschlägen, dann senden Sie aus, um das team für feedback und Kritik.Wieder, erhalten die Menschen alle kaufen in Sie.

Es kann schon sein, informellen Codierung Praktiken, die angenommen werden (e.g voranstellen member-Variablen, camelcase-Funktion von Namen).Wenn diese existiert, und die meisten code entspricht es, dann zahlen formalisieren Ihre Verwendung.Die Annahme eines im Gegensatz standard zu führen, dass mehr Kummer, als es Wert ist, auch wenn es etwas, was allgemein empfohlen wird.

Es ist auch eine überlegung Wert, refactoring bestehenden code auf die Erfüllung der neuen coding-standards.Das scheint wie eine Verschwendung von Zeit, aber, dass code, der nicht den standards entsprechen, kann kontraproduktiv sein, da haben Sie eine mish-mash von verschiedenen Stilen.Es lässt auch die Menschen in einem dilemma, ob der code in einer bestimmten Moduls entsprechen sollte der neue standard, oder Folgen Sie den vorhandenen code-Stil.

Ich habe immer verwendet Juval LÖWY ' s pdf als Referenz, wenn dabei coding-standards / best-practices-intern.Es folgt sehr nahe FxCop/Source-Analyse, das ist wieder ein unschätzbares Werkzeug, um sicherzustellen, dass die Norm befolgt wird.Zwischen diesen tools und Referenzen sollten Sie in der Lage zu kommen mit einem schönen standard, dass alle Ihre Entwickler nichts aus folgenden und in der Lage sein, Sie durchzusetzen.

Die anderen Poster haben darauf hingewiesen, dass Sie an der Grundlinie, alles, was ich hinzufügen würde, ist Ihr Dokument kurz, süß und auf den Punkt, der Einsatz einer starken Dosis von Strunk und Weiß zu unterscheiden, die "must-haves" von den "schön wäre es, wenns".

Das problem mit den coding-standards von Dokumenten ist, dass sich niemand wirklich liest, wie Sie sollten, und wenn Sie Sie Lesen, Sie nicht zu befolgen. Die Wahrscheinlichkeit, dass ein solches Dokument gelesen und befolgt variiert Umgekehrt mit seiner Länge.

Ich bin damit einverstanden FxCop ist ein gutes Werkzeug, aber zu viel von diesem Spaß direkt aus der Programmierung, also sei vorsichtig.

Schreiben Sie niemals Ihre eigenen coding-standards verwenden der MS sind (oder die Sonne, oder ...je nach Ihrer Sprache).Der Hinweis ist in den word-standard, die Welt wäre viel einfacher Ort, um code in, wenn jede Organisation hatte nicht beschlossen, schreiben Sie Ihre eigenen.Wer wirklich denkt, dass das lernen einer neuen Reihe von "standards" jedes mal, wenn Sie change-teams/Projekte/Rollen ist eine gute Verwendung von jedermanns Zeit.Die meisten sollten Sie jemals tun ist, fassen die kritischen Punkte, aber ich würde davon abraten, noch, dass da was ist kritische variiert von person zu person.Zwei andere Punkte, die ich gerne auf coding-standards

  1. In der Nähe ist gut genug - code Ändern zu Folgen, coding-standards, um den Brief ist eine Verschwendung von Zeit, solange der code ist nah genug.
  2. Wenn Sie code ändern, die Sie nicht geschrieben befolgen Sie die lokalen coding-standards", D. H.machen Sie Ihre neuen code so Aussehen wie die umgebenden code.

Diese zwei Punkte sind, die Realität zu meinem Wunsch, dass jeder möchte einen code schreiben, das genauso aussah.

Ich fand die folgende Dokumentation sehr hilfreich und übersichtlich.Es kommt von der idesign.net -Website, und es ist " von Juval LÖWY

C# Coding Standard

NB:der link ist jetzt tot.Zu erhalten .zip-Datei, die Sie benötigen, um geben Sie Ihre E-Mail-Adresse, aber Sie wird nicht verwenden es für marketing,...ehrlich gesagt) Versuchen hier

Ich habe gerade angefangen, an einem Ort, wo die coding-standards Mandat die Verwendung von m_ für member-Variablen, p_, Parameter und Präfixe für Typen wie 'str' für Streicher.So, haben Sie vielleicht so etwas wie dieser in den Körper einer Methode:

m_strName = p_strName;

Schrecklich.Wirklich schrecklich.

Ich würde hinzufügen Code Komplett 2 auf der Liste (ich weiß, dass Jeff eine Art fan hier)...Wenn Sie ein junior-Entwickler, das Buch kommt in praktisch, Ihren Geist in einer Weise, legt den Grundstein für den besten code zu schreiben Praktiken und software bauen, die es gibt.

Ich muss sagen, dass ich kam, um es ein wenig zu spät in meiner Karriere, aber es Regeln eine Menge von Möglichkeiten, die ich denke, über Codierung und framework-Entwicklung in meinem beruflichen Leben.

Es lohnt sich ;)

Microsoft eigenen Regeln sind ein hervorragender Ausgangspunkt.Sie können erzwingen mit FxCop.

Ich wäre versucht zu erzwingen Microsoft StyleCop als der standard.Es durchgesetzt werden kann, bei der build-Zeit.aber wenn Sie legacy-code, dann einfach nur durchsetzen mit StyleCop auf neuen code.

http://code.msdn.microsoft.com/sourceanalysis

Schließlich wird es umgestalten option cleanup-code.

http://blogs.msdn.com/sourceanalysis/

Ich persönlich mag die eine, die IDesign zusammengestellt hat.Aber das ist nicht der Grund, warum ich im posting,...

Der trickreiche Teil in meiner Firma war unter all den verschiedenen Sprachen berücksichtigt werden.Und ich weiß, mein Unternehmen ist nicht allein auf dieser.Wir verwenden C#, C, Assembler (wir machen Geräte), SQL, XAML, etc.Obwohl es einige ähnlichkeiten in Normen, jedes ist in der Regel anders behandelt.

Ich glaube auch, dass höhere Niveaus haben einen größeren Einfluss auf die Qualität des Endprodukts.Zum Beispiel:wie und Wann verwenden Sie Kommentare, wenn Ausnahmen sind obligatorisch (z.B.vom Benutzer initiierte Ereignisse), ob (oder Wann) Ausnahmen vs.return-Werte, was ist die Objektive Möglichkeit, um festzustellen, was sein sollte-controller-code vs-Präsentation-code, etc.Versteh mich nicht falsch, low-level-standards sind ebenfalls erforderlich (die Formatierung ist wichtig, um die Lesbarkeit!) Ich habe nur eine Neigung zu der gesamten Struktur.

Ein weiteres Stück im Auge zu behalten, ist das buy-in und Durchsetzung.Coding standards sind großartig.Aber wenn niemand stimmt mit Ihnen überein, und (wahrscheinlich noch wichtiger) niemand erzwingt Sie dann, es ist alles für die Katz.

Wie schrieb ich sowohl die veröffentlichte eine von Philips Medical Systems und der auf http://csharpguidelines.codeplex.com Ich vielleicht ein bisschen voreingenommen, aber ich habe mehr als 10 Jahre auf zu schreiben, maintaing und die Förderung von coding-standards.Ich habe versucht zu schreiben, die eine CodePlex, Unterschiede in Meinungen, in Geist und verbrachte die Mehrheit von der Einführung auf wie zu deal mit, dass in Ihrer organisation an.Lesen Sie Sie und geben mir feedback.....

SSW-Regeln

Es enthält einige C# - standards + eine ganze Menge mehr....in Erster Linie konzentriert sich auf die Microsoft-Entwickler

Sie sind wahrscheinlich set up to fail.Willkommen in der Industrie.

Ich bin nicht einverstanden - so lange, wie schafft er das Dokument, das Schlimmste, was passieren kann, ist, dass es bekommt, vergessen von allen.

Wenn andere Leute haben Probleme mit dem Inhalt, dann können Sie Sie bitten, Sie zu aktualisieren, um zu zeigen, was Sie bevorzugen würden.So ist es aus dem Teller, und die anderen haben die Verantwortung zu rechtfertigen, deren änderungen.

Ich habe vor kurzem gefunden Encodo C# Handbuch,, die gehören Ideen aus vielen anderen Quellen (IDesign, Philips, MSDN).

Eine weitere Quelle kann Professional C#/VB .NET-Coding-Guidelines.

Ich bin ein großer fan von Francesco Balena Buch "Praktische Richtlinien und Best Practices für VB-und C# - Entwickler".

Es ist sehr ausführlich und umfasst alle wesentlichen Themen, die Sie nicht nur geben Sie die Regel, aber auch erklärt, der Grund für die Regel, und bietet sogar eine anti-Regel, bei der zwei gegnerische best practices.Der einzige Nachteil ist, dass es geschrieben wurde für .NET 1.1 Entwickler.

Unsere gesamte coding standard liest sich grob "Verwenden StyleCop."

Ich schlage vor, die dotnetspider.com Dokument.
Es ist ein großes und detailliertes Dokument, das nützlich ist, überall.

Ich habe Juval ' s vor und das ist durch, wenn nicht übertrieben, aber ich bin faul und jetzt nur entsprechen den Willen Resharper.

Sie können überprüfen, diese Top-7-Coding-Standards & Leitfaden-Dokumente Für C# -/.NET-Entwickler http://www.amazedsaint.com/2010/11/top-6-coding-standards-guideline.html hoffe, das hilft

Ich glaube, ich schließe mich den anderen Kommentaren hier, dass die MS-Richtlinien bereits in Verbindung sind ein hervorragender Ausgangspunkt.Ich habe mein Modell-code weitgehend auf diese.

Das ist interessant, weil mein manager hat mir gesagt, in der Vergangenheit, er ist nicht allzu scharf auf Sie :D

Sie haben eine tolle Aufgabe vor Euch, mein Freund.Viel Glück, und bitte Fragen Sie, wenn Sie benötigen etwas mehr :)

Der standard von Philips Medical Systems ist gut geschrieben, und meist folgt Microsoft-Richtlinien:www.tiobe.com/content/paperinfo/gemrcsharpcs.pdf

Meine Anforderungen sind auf dieser Basis mit ein paar Verbesserungen und einige updates für .NET 2.0 (die Philips standard geschrieben .NET-1.x ist also ein bisschen veraltet).

In dem code, den ich Schreibe ich in der Regel Folgen .NET Framework-Design-Richtlinien für die öffentlich bereitgestellten APIs und Mono-Coding-Guidelines für private Mitglied Gehäuse und Einzug.Mono ist ein open-source-Implementierung von .NET, und ich denke, diese Jungs kennen Ihr Geschäft.

Ich hasse, wie Microsoft-code Abfälle Raum:

try
{
    if (condition)
    {
        Something(new delegate
        {
            SomeCall(a, b);
        });
    }
    else
    {
        SomethingElse();
        Foobar(foo, bar);
    }
}
catch (Exception ex)
{
    Console.WriteLine("Okay, you got me");
}

Was Sie vielleicht seltsam finden in Mono-Leitlinien, ist, dass Sie 8-space tabs.Jedoch, nach einiger übung, ich fand, dass es tatsächlich hilft mir das schreiben weniger verheddert code mit der Durchsetzung einer Art von Einzug Grenze.

Ich Liebe auch, wie Sie setzen Sie ein Leerzeichen vor der öffnenden Klammer.

try {
        if (condition) {
                Something (new delegate {
                        SomeCall (a, b);
                });
        } else {
                SomethingElse ();
                Foobar (foo, bar);
        }
} catch (Exception ex) {
        Console.WriteLine ("Okay, you got me");
}

Aber bitte nicht durchzusetzen, so etwas wie, dass, wenn Ihre Kollegen nicht mögen (es sei denn, Sie sind bereit, einen Beitrag zu Mono ;-)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top