Me enseñaron desde la escuela secundaria que define variables como esta:
int _a;
o
int __a;
debe considerarse una mala práctica porque esto eventualmente desconcertará a los compiladores que usan variables que comienzan con un guión bajo para nombrar variables temporales.
Hasta donde sé, esta es la razón por la cual a algunas personas les gusta mover el guión bajo al final del nombre, como:
int a_;
Sin embargo, veo una gran cantidad de código que utiliza variables de inicio de subrayado. Y ese código se construye bastante bien con Visual Studio 2010 y g ++ 4.x.
Entonces me pregunto: ¿no es un problema hoy en día? ¿Los compiladores modernos son más inteligentes con respecto a las convenciones de nombres?
c++
programming-practices
naming-standards
Emiliano
fuente
fuente
Respuestas:
Aparentemente está malinterpretando la razón por la cual los guiones bajos del prefijo son malas prácticas. Para abreviar, es porque los estándares C y C ++ reservan estos prefijos para los detalles de implementación, por ejemplo, para la implementación estándar de la biblioteca. (tenga en cuenta que _ y __ no están reservados para las mismas cosas, ver comentarios)
Incluso si los nombres están dentro del alcance (espacio de nombres, clase, etc.), puede haber algunos nombres globales, en particular macros, que usan estos prefijos y podrían romper silenciosamente su código si los usa también.
Entonces, básicamente, la mayoría de las veces es seguro usar estos prefijos PERO si no los usa, tiene una garantía del 100% de que su nombre nunca entrará en conflicto con los nombres de implementación.
Es por eso que, en duda, no use estos prefijos.
fuente
_limit
no es un error, sino que es una función global. Creo que es mejor tener una política simple que diga "no use guiones bajos destacados, sin excepción", que una política que los permita en algunos contextos y no en otros. Pero podemos aceptar diferir en eso. Y para ser claros, no tengo problemas con guiones bajos en otros lugares que no sean el principio.Usar dos guiones bajos es definitivamente malo, eso está reservado para los detalles de implementación específicos del compilador. Esto no se aplica al uso de un guión bajo.
Algunas personas odian los guiones bajos. Ya sea que llame algo
m_index
ohighest_price
o_a
- que lo detestan. Trabajé con alguien hace 25 años que me habló de una impresora IBM específica (una muy popular) que se ajustaba a más líneas en la página al omitir el píxel inferior en cualquier otra línea. Esto estaba bien para los memos, o para la producción de grandes cantidades de números y demás, pero tuvo el efecto para el código de hacer invisible la mitad de sus guiones bajos. (¡Sí, de verdad!) Las personas de esa generación generalmente tienen el odio irracional de subrayado, ya sea por la interacción con esa impresora o por trabajar con alguien que los golpea y que los subrayados no deben usarse.La mayoría de la gente encuentra el uso de mayúsculas y minúsculas (una opción que no teníamos en, por ejemplo, Fortran) un enfoque más legible:
mIndex
,HighestPrice
,a
resisten bastante bien a los ejemplos anteriormente subrayados. Te daré dos reglas:_limit
para parámetros de función,m_limit
para variables miembro, nunca use guiones bajos, mayúsculas y minúsculas, escriba mayúsculas en cada palabra, húngaro, algo ) y sígala. No bop a veces con guiones bajos al principio, a veces al final, a veces sin usarlos, y cinco convenciones de carcasa diferentes. Se consistente.La impresora en cuestión ya no existe. Si desea utilizar un guión bajo a la vez, siéntase libre de hacerlo. Pero entiendo, los que odian subrayar todavía existen.
fuente