¿Qué es una buena convención de nomenclatura para variables de función de gran alcance?

StackOverflow https://stackoverflow.com/questions/151594

  •  02-07-2019
  •  | 
  •  

Pregunta

Puede tener diferentes convenciones de nomenclatura para miembros de clase, objetos estáticos, objetos globales y estructuras. Algunos de los ejemplos de ellos son los siguientes.

_member
m_member

o en el caso de Java, el uso de this.member .

¿Pero hay alguna buena técnica o convención de nomenclatura para el alcance de las variables de función que se transmite cuando una sola variable tiene un alcance de función completo o un alcance de vida útil corto?

void MyFunction()
{
  int functionScopeVariable;

  if(true)
  {
    //no need for function variable scope naming convention
  }
}
¿Fue útil?

Solución

Tendemos a usar un prefijo l_ en nuestras funciones para "local". Y eso funcionó bastante bien.

Otros consejos

Realmente animo a delegar esta tarea al IDE / editor que usa.

No, en realidad no estoy hablando de nombrar variables, eso aún lo hace mejor un humano. Pero la tarea subyacente de tales estrategias de nomenclatura es mostrarle qué tipo de variable representa cualquier nombre.

Casi todos los IDE que valen la pena pueden definir diferentes estilos (colores, fuentes, tipos de fuente, ...) a diferentes tipos de variables (miembro de instancia, miembro estático, argumento, variable local, ...), de modo que el IDE decirle qué tipo de variable es en realidad le libera de tener que escribir esos (o inútiles) prefijos o sufijos cada vez.

Entonces, mi sugerencia: use nombres significativos sin ningún prefijo o sufijo.

Un método es seguir la directriz de que cuanto mayor sea el alcance de la variable, más largo será el nombre. De esta manera, las variables globales obtienen nombres descriptivos largos, mientras que las cosas de alcance limitado como la variable de índice de bucle pueden ser tan pequeñas como letras simples.

Utilizo prefijos o convenciones de nomenclatura especiales en variables globales, estáticas y miembros, por lo que no tengo que usar prefijos en locales. Prefiero tener la opción de usar nombres cortos de variables locales, especialmente para las variables de bucle.

Hay un argumento de que no debería tener 'funciones de gran alcance', por lo que no debería haber un problema con la asignación de nombres: solo use las convenciones de nomenclatura variable de 'función de pequeño alcance'.

La guía de MSFT y otras guías de estilo para campos de instancias privadas es _memberName (notación de caso de camello con el prefijo " _ " ). Esta es también la convención utilizada en el código fuente de muchos tutoriales recientes de Microsoft.

Lo uso porque es más corto, no húngaro, y R # lo admite como la regla predeterminada para los campos de instancias privadas.

También me gusta porque oscurece los campos privados de Intellisense, como debería, ya que debería preferir acceder a sus miembros públicos primero. Si deseo acceder al Nombre de la propiedad y empiezo a escribir " Na " La primera sugerencia es el nombre de propiedad de instancia pública en mayúscula de Pascal. En los raros casos en que quiero acceder al campo privado directamente, esto me obliga a tomar una decisión consciente de comenzar a escribir " _ " ;, luego obtengo la lista completa de mis campos privados en Intellisense surgir.

También he visto una guía que dice que debería ser _MemberName si es el campo de respaldo de una propiedad pública llamada MemberName (notación de caso Pascal prefijada con " _ ") Yo personalmente no ' me gusta porque creo que la M mayúscula es redundante, agrega pulsaciones de teclas innecesarias y no agrega ninguna información adicional.

Realmente todo se reduce a cualesquiera que sean las pautas de estilo para el idioma que sugiera si hay alguna.

Creo que todo está bien siempre que transmita el significado de su uso.

Prefiero mantenerlo simple, uso:

 m_varname - Class member variables
 g_varname - Global variables

Uso la misma convención que uso para los miembros de la clase. El IDE debe encargarse de encontrar su declaración. Si una función es tan grande y confusa que se convierte en un problema, hay un problema de gretaer que debe ser la dirección.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top