Convención de capitalización para campos protegidos C #

17

¿Cuáles son las convenciones de capitalización para los nombres de campo protegidos en C #?

¿Es _myVar (como campo privado) o MyVar (como propiedades)?

Louis Rhys
fuente
3
¿Estás seguro de que deseas tener campos protegidos? La mayoría de las razones para no tener campos públicos también se aplican a los protegidos, por lo que creo que es mejor usar propiedades protegidas.
svick
en casos de prueba, normalmente es conveniente tener campos protegidos ... pero tal vez tengas razón, se puede cambiar a propiedades. Pero si quiero un campo protegido, ¿cuál es la convención de nomenclatura?
Louis Rhys
2
¿Estás seguro de que _myVar es la convención adecuada para campos privados? (Usted está haciendo una premisa de que lo es). No está tratando de comenzar una guerra religiosa aquí, solo tratando de decir que si opta por algún tipo de regla arbitraria para campos privados, puede elegir otra regla para sus campos protegidos. El único consejo es ser consistente.
Marek

Respuestas:

13

Hay algo que se llama Pautas de diseño para desarrollar bibliotecas de clases que está escrito por Microsoft.

Dice lo siguiente:

No proporcione campos de instancia que sean públicos o protegidos.

Los campos públicos y protegidos no se versionan bien y no están protegidos por las demandas de seguridad de acceso al código. En lugar de usar campos visibles públicamente, use campos privados y exponga a través de propiedades.

Tanto como:

  • Utilice la carcasa de Pascal en los nombres de campo.

  • No use un prefijo para los nombres de campo. Por ejemplo, no use g_ o s_ para distinguir los campos estáticos de los no estáticos.

En cuanto al _prefijo, se usa con la misma frecuencia que la this.convención (hasta ahora he visto navegar por el código fuente en CodePlex / GitHub). ReSharper, por ejemplo, promueve _en sus comprobaciones de nombres.

jgauffin
fuente
ha sido un poco selectivo al no incluir el "No use un prefijo para los nombres de campo". de MSDN junto con la regla de la carcasa de Pascal :) Si bien es cierto que el compartidor de forma predeterminada promueve el prefijo _, si cita las convenciones de MSDN en mi humilde opinión, no debe mezclarlas con sus propias impresiones.
Marek
2
¿Qué significa "no versionar bien"? ¿Está diciendo que dado que no se recomienda el campo protegido, no hay una directriz sobre su nombre? De todos modos, Resharper parece recomendarMyVar
Louis Rhys
2
@Marek: Incluí mi propia preferencia. Simplemente dije lo que prefería Resharper. Y no era mi intención ser selectivo. Respuesta actualizada
jgauffin
1
@jgauffin Además de que los consumidores usan la reflexión contra su código, ¿no está cambiando un campo a una propiedad transparente para las personas que llaman? ¿Cómo cambiar un campo protegido a una propiedad protegida del mismo nombre rompe la compatibilidad?
Quantic
1
rompe la compatibilidad binaria: msdn.microsoft.com/en-us/library/ta31s3bc(v=vs.71).aspx
jgauffin