¿Qué hace cuando su convención de nomenclatura choca con su idioma?

14

Bueno, esta es una de esas pequeñas cosas que siempre me molestaban. Por lo general, no abrevio los identificadores, y la única vez que uso un identificador corto (por ejemplo, i ) es para un ciclo cerrado. Así que me irrita cuando estoy trabajando en C ++ y tengo una variable que necesita ser nombrada operator o class y tengo que trabajar alrededor de ella o usar una abreviatura, porque termina sobresaliendo. Advertencia: esto me puede suceder de manera desproporcionada porque trabajo mucho en el diseño de lenguajes de programación, donde los objetos de dominio pueden reflejar conceptos en el lenguaje principal y causar conflictos inadvertidamente.

¿Cómo lidiarías con esto? ¿Abreviar? ( op ) ¿Misspell? ( klass ) ¿Algo más? ( operator_ )

    
pregunta Jon Purdy 03.01.2011 - 18:51

9 respuestas

21
  1. Acepte que podría tener que realizar cambios menores en su convención de nomenclatura, como agregar mayúsculas. Es mejor aceptar esto lo antes posible para que todo el código subsiguiente sea consistente.

  2. Considera ser más específico. Las palabras clave tienden a ser bastante amplias, por lo que reducir class a demonstrationClass no solo soluciona los problemas, sino que también aumenta la legibilidad.

respondido por el Maxpm 03.01.2011 - 19:43
10

No es algo que haya encontrado, pero si me encuentro en tal situación, trataría de resolverlo con las siguientes opciones, en orden.

  1. Intenta encontrar un sinónimo.
  2. (especialmente para las variables) intente encontrar un prefijo o un postfijo
  3. (especialmente para las clases) cambia la primera letra a mayúsculas y olvida la regla de codificación de que los nombres no deben diferir solo en el caso. Esta opción, probablemente solo usaría si el conflicto es con una palabra clave.
  4. Use una abreviatura.
respondido por el Bart van Ingen Schenau 03.01.2011 - 19:10
6

El lenguaje gana; no puede ser más astuto que el compilador (ignorar abominaciones como el PL / 1 IF IF = THEN THEN THEN = ELSE ELSE ELSE = IF END , pero luego PL / 1 no causaría que haga la pregunta en primer lugar). Básicamente, debe seguir las reglas del idioma y buscar una alternativa a las palabras clave del idioma para su propio uso, o encontrar un idioma alternativo.

Entonces, excepto en circunstancias muy inusuales, te adaptas al lenguaje, no al revés.

    
respondido por el Jonathan Leffler 03.01.2011 - 21:53
5

En lugar de abreviar, ¿qué hay de alargar? Si está implementando una construcción de clase en un lenguaje Foo, ¿qué le parece usar FooClass y foo_class? (Modulo cualesquiera que sean sus preferencias de carcasa).

    
respondido por el Winston Ewert 03.01.2011 - 21:01
5

Algunas de las abreviaturas que he usado para class , en orden de frecuencia:

  • cls
  • clss
  • clazz
  • theClass
  • aClass

Si sé qué clase representa la instancia Class , podría incluirla en el nombre de la variable:

  • stringClass = Class.forName("java.lang.String");
respondido por el Mike Clark 03.01.2011 - 23:18
4

En C y C ++, todas las palabras clave están en minúsculas y el idioma distingue entre mayúsculas y minúsculas, así que presione la tecla de mayúsculas de vez en cuando y desaparecerán muchos problemas.

En Modula 2, todas las palabras clave son mayúsculas, pero siempre que sus identificadores tengan algunas letras minúsculas, la diferencia es obvia y no es posible el choque.

Además, las convenciones de nomenclatura absoluta en cierta medida deben reflejar las convenciones normales del lenguaje que estás utilizando, por lo que ciertamente escribiría "myClass" en Java, donde probablemente escribiría "My_Class" en C ++.

Básicamente, no solo estás escribiendo para el compilador, sino que lo que las personas encuentran legible depende, en cierta medida, del contexto y las expectativas relacionadas.

    
respondido por el Steve314 03.01.2011 - 19:25
3

No me encuentro a menudo con esto, pero cuando lo hago, tiende a ser un problema porque utilizo Delphi y le permite solucionar este problema al anteponer un & al identificador. Por lo tanto, "clase" no es un identificador válido, pero "& clase" es.

    
respondido por el Mason Wheeler 05.01.2011 - 02:21
2

Yo agregaría algún tipo de espacio de nombre al nombre de la variable. Por ejemplo, supongamos que tiene un módulo llamado usuario, entonces modificaría el operador de nombre de variable para que sea algo como usuario_operador o usuarioOperador.

    
respondido por el Pemdas 03.01.2011 - 18:57
2

cambiar o ajustar mi convención de nomenclatura

    
respondido por el Muad'Dib 03.01.2011 - 20:40

Lea otras preguntas en las etiquetas