c# - que - ¿Para qué debería marcar las variables privadas como privadas si ya están?
para que sirve el get y set (10)
Ahora; los campos deben ser muy, muy, siempre, privados, de todos modos, por lo que es un caso extremo si te molestas.
Para el tema más amplio, recuerdo un comentario de Eric Lippert, esencialmente diciendo que dado un método / clase / lo que sea:
void Foo() {}
class Bar {}
Entonces no está claro si son privados / internos deliberadamente, o si el desarrollador lo ha pensado, y decidió que deberían ser privados / internos / lo que sea. Así que su sugerencia fue: dígale al lector que está haciendo las cosas deliberadamente en lugar de hacerlo accidentalmente, explíquelas.
Hasta donde yo sé, en C # todos los campos son privados por defecto, si no están marcados de otra manera.
class Foo
{
private string bar;
}
class Foo
{
string bar;
}
Supongo que estas dos declaraciones son iguales.
Entonces mi pregunta es: ¿para qué debo marcar las variables private
como private
si ya son privadas?
Creo que para la legibilidad siempre es mejor ser explícito.
Como un lado, es posible que desee echar un vistazo a un complemento de estudio visual llamado Code Style Enforcer ( http://joel.fjorden.se/static.php?page=CodeStyleEnforcer ) que utiliza las extensiones dxCore para proporcionar real- tiempo de retroalimentación sobre el cumplimiento de sus códigos a los estándares de codificación (totalmente personalizable).
Depende de usted. Haga lo que sea mejor para la legibilidad o tenga sentido en su caso. Los marqué como privados solo para dejarlo en claro.
Esto es puramente una cuestión de estándares de codificación, pero, por lo que vale, siempre señalo explícitamente a los miembros privados como privados.
He estado en la cerca por un tiempo sobre esto. Solía argumentar para dejarlo implícito, pero ahora creo que estoy inclinado a hacerlo explícito.
Razones para dejarlo implícito:
- Significa que hay una mayor diferencia para los miembros no privados (o cualquier cosa con más acceso que el predeterminado); esto resalta la diferencia al leer el código
Razones para hacerlo explícito:
- Algunos desarrolladores pueden no conocer los valores predeterminados: hacerlo explícito significa que está claro para todos
- Muestra que has tomado una decisión activa, en lugar de solo dejarla en el valor predeterminado
Estos últimos puntos son básicamente los realizados por Eric Lippert cuando lo discutimos hace un tiempo.
No hagas que la gente adivine, no permitas que hagan suposiciones falsas, y no creas que menos personajes igualen a la claridad.
No hay una buena razón para no hacer esto explícito, y es un error que C # lo respalde (especialmente si están dispuestos a hacer lo que hicieron para cambiar las declaraciones por la misma razón)
Personalmente prefiero marcar explícitamente los campos públicos predeterminados privados y predeterminados. Es posible que conozca los valores predeterminados, pero a su cerebro le gustará la verbosidad siempre que escanee rápidamente el código.
Sí, son iguales, pero me gusta marcar las variables privadas como privadas , creo que mejora la lectura.
también utilizo esta notación común para miembros privados, es muy útil:
private string _bar;
Si cambiaba entre Java y C # regularmente, me imagino que sería bastante importante especificar el carácter explícito del modificador de acceso. Por ejemplo en Java
void myMethod()
{
}
cualquier clase en tu paquete tiene acceso a ese método. En C # es obviamente privado para la clase y las clases internas.
Usar de forma explícita privacidad puede mejorar la legibilidad en ciertos casos extremos.
Ejemplo:
/*
Tomorrow when we wake up from bed,
first me and Daddy and Mommy, you, eat
breakfast eat breakfast like we usually do,
and then we''re going to play and
then soon as Daddy comes, Carl''s going
to come over, and then we''re going to
play a little while. And then Carl and
Emily are both going down to the car
with somebody, and we''re going to ride
to nursery school [whispered], and then
when we get there, we''re all going
to get out of the car...
*/
int spam;
/*
Does this style look at all familiar?
It should!
*/
Al mirar este fragmento, puede que no sepa si está en el alcance del método o la clase.
El uso de private
o underscore en el nombre de campo ( private int spam;
int spam_;
o int _spam;
) eliminará la confusión.