Frage

Wir sind dabei, unsere Projekte von C # 2.0 / VS2005 C # 3.0 / VS2008 der Aktualisierung. Im Rahmen der Aktualisierung werden fügen wir einige Elemente unserer Coding-Standards Dokument.

Wie würden (oder haben) können Sie Ihr Coding-Standards Dokument ändern, wenn von C # 2.0 / VS2005 C # 3.0 / VS2008 Upgrade?

War es hilfreich?

Lösung

Sie könnte / sollte über Ratschläge geben:

  • Wenn zu Abfrage Ausdrücke vs Punktnotation verwenden
  • Beschränkungen in Bezug auf die Verwendung von Lambda-Ausdrücke (beispielsweise „nicht erfasst Variablen ändern). (Dies könnte auch auf anonyme Methoden in C # 2 gelten selbstverständlich).
  • Wenn schreiben Erweiterungsmethoden
  • Wenn verwenden implizit typisierte Variablen (var)

Die letzten zwei von diesen verursachen einige Kontroversen, vor allem var.

Wenn Ihre Konventionen keiner Design-Richtlinien geben, würde ich vorschlagen, dass Sie auch Programmierer beraten mit Delegierten für die Spezialisierung zu überlegen, wo vorher könnten sie Vererbung oder Schnittstellen verwendet haben. Ein gutes Beispiel hierfür ist das Sortieren -. Es ist einfacher (und besser lesbar) einen Vorsprung zu verwenden, um eine Sortierreihenfolge angeben, als eine Implementierung von IComparer<T> zu schreiben

Andere Tipps

Das Upgrade fiel mit einem neuen Projekt, so dass, wenn wir bewegt haben wir Werkzeuge wie StyleCop und FxCop verwenden, die unsere Coding-Standards geändert. Auch handlich es erzwingt sie auch: o)

Es soll nichts per se ändern aufgrund der Aktualisierung, wenn Sie bei Coding-Standards um neue Features wie LINQ Ausdrücke, Layout, Lambda gegen Abfragesyntax.

aussehen müssen

Mein persönliches Lieblingsärgernis ist die Verwendung von var wo auch immer „möglich“.

„möglich“ zur Zeit als einer der folgenden Fälle festgelegt werden, vor allem in der Reihenfolge abnehmender Ordentlichkeit:

Offensichtliche und hilft DRY:

var obj1 = new Something();
var obj2 = (Something)ObscureFunction();
var obj3 = ObscureStuff() as Something;

Bewachtet, ist mir egal, solange es kompiliert:

var obj4 = ObscureFunction();
foreach(Something s in obj4) { ... }

Komplexe Generics und fast jedes LINQ Ergebnis:

var obj5 = ctx.GetQuery<Something>()..ToList(..)..GroupJoin(..)...ToLookup(...);

Meine Standards für neue Features für das Jahr 2008:

  • Verwenden var sparsam nur mit anonymen Typen.
  • Förderung der Nutzung von Lambda-Ausdrücke über Personen.
  • Nur Erweiterungsmethoden verwenden, wenn Sie nicht die Kontrolle des Quellcodes haben
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top