c# coding-style conventions stylecop

¿Cómo se resuelve la discrepancia entre "StyleCop C#style" y "Framework Design Guidelines C#style"?



coding-style conventions (4)

En un blog que leí sobre esto (parece que no puedo encontrar la URL) se dijo: las directrices marco se basan y evolucionaron desde la guía de C ++ (son todos desarrolladores experimentados de C ++) mientras que las pautas que proporciona el estilocop son más nuevas y modernas. solo guía ... Ambos están bien, toma una decisión tú mismo ... yo personalmente uso los de StyleCop

Después de leer el Apéndice A, "Convenciones sobre el estilo de codificación C #" del gran libro "Pautas de diseño del marco" (2ª edición de noviembre de 2008), estoy bastante confundido sobre qué estilo de codificación utiliza Microsoft internamente / recomendando.

La entrada del blog A Breve historia de C # Style afirma:

De hecho, las diferencias entre el "StyleCop style" y el "Framework Design Guidelines style" son relativamente menores

Como lo veo, las diferencias son bastante pronunciadas. StyleCop dice que la llave de apertura debe estar en una línea separada, las Pautas de diseño del marco dicen que debería ser después de la declaración de apertura. StyleCop dice que todas las palabras clave deben ir seguidas de un espacio, las Pautas de Diseño del Marco dicen ''deshazte de todos los espacios'' (incluso alrededor de operadores binarios).

Encuentro esta regla del libro de Directrices de Diseño de Marco especialmente irónica (página 366, regla sexta desde arriba):

No use espacios antes de las declaraciones de control de flujo

Right: while(x==y) Wrong: while (x == y)

Esto indica explícitamente que el estilo de StyleCop es incorrecto (espacio después de la palabra clave while, espacios antes y después del operador binario de igualdad).

Al final, el código formateado utilizando el estilo StyleCop tiene una "sensación" bastante diferente de la formateada utilizando el estilo de las Pautas de diseño del marco. Siguiendo el estilo de las Pautas de diseño del marco, uno debería deshabilitar un conjunto de reglas (Y no hay reglas que verifiquen el cumplimiento del estilo de las Pautas de diseño del marco ...).

¿Podría alguien (expertos de MSFT tal vez?) Arrojar algo de luz sobre esta divergencia?

¿Cómo está lidiando tu equipo con esto? ¿Siguiendo a StyleCop? Pautas de diseño del marco? Ignorando el estilo por completo? ¿Horneando tu propio estilo?


Tú tomas una decisión. Si le gustan algunas partes de una y algunas partes de la otra, escriba su propia guía de estilo. Si te gusta uno mejor que el otro, elígelo.

Lo esencial es elegir un estilo; no hay forma de evaluar uno sobre otro de una manera cuantitativa rigurosa.


Usamos StyleCop para todo nuestro código, y aparte de algunos inconvenientes menores, creo que la mayoría de sus estándares conducen al código más legible. Muchos de sus estándares han sido ampliamente discutidos dentro de Microsoft, y han recibido comentarios de la comunidad, y si bien no se espera que todos estén de acuerdo con todo, probablemente se trate del mejor ''estándar'' que existe (particularmente porque permite la automatización validación y corrección automática con el plugin StyleCop for ReSharper).

Si hay algo con lo que no está de acuerdo, Jason Allor, que mantiene la herramienta, está bastante abierto a sugerencias sobre ciertas cosas, por ejemplo, con propiedades automáticas en las que StyleCop originalmente insistió ...

public int Prop { get; set; }

... pero planteamos una solicitud de cambio para permitir propiedades de línea única (es decir, todo en una línea), ya que no es menos legible y ocupa menos espacio. Hizo este cambio dentro de unos días.


Este artículo del equipo de stylecop explica exactamente lo que estás preguntando, creo. http://blogs.msdn.com/sourceanalysis/archive/2008/05/25/a-difference-of-style.aspx

Y para responder a la segunda parte de su pregunta, nuestro equipo acaba de comenzar a usar StyleCop usando todas las reglas (algunas personas eligen y eligen las que usar). Lo único que no me gusta es el tiempo extra que lleva, pero usar una herramienta como StyleCopForResharper hace que vaya mucho más rápido. Solía ​​enojarme mucho cuando las personas escribían código que se veía de forma diferente a como lo habría escrito, pero ahora que usamos StyleCop, el código de todos parece idéntico. No más morderse el labio sobre cosas molestas que la gente hace