¿Cuál es el punto de hacer una distinción sintáctica entre los tipos estándar y definidos por el usuario?

13

Aunque aquí me referiré específicamente a C ++ y convenciones de nombres de Bjarne Stroustrup , en principio, he visto que las personas usan reglas algo similares para otros idiomas aquí y allá.

Entonces, la idea básica es que uno debería poder distinguir los tipos estándar de los tipos definidos por el usuario mientras lee el código. Por ejemplo, Bjarne Stroustrup sugiere que uno utiliza

  

una letra mayúscula inicial para los tipos (por ejemplo, Cuadrado y Gráfico)

que, teniendo en cuenta que

  

El lenguaje C ++ y la biblioteca estándar no usan letras mayúsculas

permite alcanzar el objetivo mencionado anteriormente.

Pero ¿por qué necesitamos hacerlo? ¿Cuál puede ser el propósito de distinguir los tipos estándar y definidos por el usuario?

No pude encontrar ningún razonamiento de Bjarne Stroustrup sobre este asunto, y además, yo mismo pienso de manera diametralmente opuesta. : D Lo sé, lo sé, "¿Quién soy yo para disputar a Stroustrup?" Pero, escuche, un montón de características del lenguaje C ++, por ejemplo, la sobrecarga del operador, tiene el propósito de permitir a los tipos definidos por el usuario un nivel similar de soporte sintáctico como los tipos estándar. Y luego todo esto queda desconcertado por una disciplina de nombres diferente ...

P.S. Sin mencionar que a menudo una palabra no es suficiente para nombrar una clase y una palabra separada por un guión bajo que comienza con una letra mayúscula parece tan extraña.

    
pregunta Wildcat 28.11.2014 - 20:46

3 respuestas

5

No hay ningún propósito o beneficio en absoluto. Uno de los objetivos de C ++ era tratar los UDT y los primitivos de manera intercambiable, y aunque no han tenido un éxito total, esta es un área en la que no tiene que diferenciarse.

Cuando se trata de nombrar, Stroustrup está loco, y esto es un hecho científicamente probado.

    
respondido por el DeadMG 28.11.2014 - 21:27
3

Las convenciones de nomenclatura tienen que ver con la comprensión humana del código (es decir, programador y mantenedor).

Los UDT se pueden especificar para que la declaración de variables, la inicialización, las expresiones y las declaraciones funcionen en ellas de manera diferente a como lo hacen los tipos estándar. Para encontrar un problema, es útil para el mantenedor tener alguna idea de que alguna sección del código puede hacer cosas extrañas (por ejemplo, la implementación de un tipo integral definido por el usuario utilizado dentro de alguna función puede tener un defecto en cómo lo hace). / p>

Hay muchas maneras de proporcionar tales señales (comentarios, especificaciones de diseño, etc.). La ventaja de las convenciones de nomenclatura es que están presentes en el código, mientras que los comentarios pueden omitirse, estar desactualizados, etc.

    
respondido por el Rob 25.01.2015 - 03:04
2

Una de las razones por las que uso palabras en mayúsculas para los tipos, es para distinguir las variables de los tipos. Esto permite declarar una variable con, aparte de las mayúsculas, el mismo nombre:

Foo foo;
Graph graph;

Esto puede ser útil para las clases de las cuales solo se usa una instancia en cada contexto, por ejemplo. Ajustes de configuración.

    
respondido por el Sjoerd 25.01.2015 - 04:29

Lea otras preguntas en las etiquetas