2012-08-05 7 views
9

He escuchado que varios programadores sugieren no incluir la palabra "privado" en declaraciones, firmas de métodos, etc. ya que privado es el alcance predeterminado cuando no se especifica. Puede hacer que el código sea más limpio, pero me interesan las opiniones sobre si usas el alcance "privado" de tus variables, métodos, etc. Las herramientas como CodeRush que generan código para ti incluyen la palabra "privada", entonces yo ' Me da curiosidad si esto es bueno o malo o solo una cuestión de preferencia personal.Como "privado" es el alcance predeterminado en C# - ¿debería eliminarse la palabra "privada" de las firmas para obtener un código más limpio?

Respuesta

16

El código del limpiador es más explícito en cuanto a las intenciones del diseñador. Usar private demuestra una elección deliberada, no abierta al debate. La caída al valor predeterminado abre las preguntas: ¿fue esto a propósito, o simplemente olvidó incluir un modificador?

+1

Excepto que privado es el valor predeterminado (excepto para las clases no anidadas). Entonces, lo mejor que el diseñador puede hacer para que el código sea más seguro y fácil de entender es mantener la superficie pública lo más pequeña posible. Hacer algo privado no requiere una decisión deliberada. Hacer algo no privado sí lo hace. –

+0

@Kyralessa: mencioné que es el valor predeterminado, y mi argumento es que, al menos en principio, _todo_ lo que debes hacer es _deliberate_, no solo marcar algo 'public'. –

+0

Estás asumiendo que omitir el modificador solo podría ser accidental. –

8

Retire el privado y pedir a sus compañeros desarrolladores si están confundidos o no

Personalmente me siento, incluyendo privada que el código sea más legible. Me gustaría dar más importancia a "legibilidad" que "estar limpio"

+2

Más código _readable _is_ _cleaner_. ¡Cleaner no es (necesariamente) más corto! –

0

Corresponde al compilador cómo interpretar métodos u otros miembros de la clase sin privado, protegido o público. Se puede cambiar en la versión nex. Entonces no lo hagas

+4

Eso sería un _breaking_ change ... –

+1

En realidad, en VB6 los procedimientos son públicos por defecto. Eso cambió en VB.Net. Sí, rompiendo el cambio. Cualquiera que no haya declarado su alcance de método tenía mucho trabajo por hacer al migrar el código de VB6 a VB.Net. – DOK

3

En una base de código donde las cosas que son públicas son una pérdida de información (por ejemplo, ya no se ofuscarán), desea que public sobresalga. La eliminación de private también tiene el mismo efecto de 'marea que sale' en protected y otra visibilidad innecesariamente elevada.

Lo ideal sería utilizar una regla StyleCop o similar para hacer que el código sea realmente coherente (aunque eso, como con todas las reglas de código, debería acordarse entre los desarrolladores antes de que alguien llegue a una conclusión al respecto).

(BTW Su argumento en la premisa es que el soporte de CodeRush para omitirlo es incorrecto; las opciones le permiten establecer la visibilidad del método, etc. private (OOTB) o 'predeterminado' (no especifique nada)).

+0

Ruben: ¿me puede indicar dónde puedo hacer que "privado" no aparezca en las opciones de DevExpress para CodeRush? – Neal

+0

DevExpress \ Options - Editor \ Code Style \ Scope - Métodos: Seleccione "Predeterminado" –

+0

@RoryBecker gracias por intervenir. Mientras estamos aquí, solo me di cuenta de que existía porque tenía la mente ensangrentada y estaba en mi tercera vuelta de cada menú de opciones allí. El problema es que 'Predeterminado' significa poco. No conozco la solución, pero tal vez debería decir 'Predeterminado (sin palabra clave emitida)' o algo así? (Sí, sé que es más que probable técnicamente el término correcto en el estándar lang) –

Cuestiones relacionadas