un programador, muchos idiomas: el dilema del nombre


14

Cuando trabajas en múltiples lenguajes de programación, hay un problema que encuentras ...

Un nombre válido (identificador) en un idioma no es válido en otro. Por ejemplo...

var new function thisson palabras clave en JavaScript, pero puede usarlas libremente en Python. Del mismo modo list dict defse puede utilizar en JavaScript sin problemas.

Esto es muy común y algo que los programadores generalmente conocen rápidamente cuando programan en varios idiomas.

Sin embargo, cuando trabajas en colaboración, debes establecer algunas reglas / pautas para los miembros de tu equipo para garantizar la coherencia y la uniformidad en el código. Con los equipos, este problema se vuelve más importante que simplemente recordar qué es válido y qué no mientras se programa.

Entonces, mi pregunta es, qué estrategias adoptas ...

  • simplemente tome una unión de todas las palabras reservadas presentes en todos los idiomas que usa, entregue una lista a todos y abstenerse de usarlas.
  • acepte la diversidad y haga más esfuerzos cuando "cambie de contexto"
  • adoptar un terreno intermedio donde un idioma puede usar el otro, pero no al revés

(Nota: solo estoy hablando de Python y JavaScript en esta pregunta ... pero responda la pregunta más ampliamente)

- ACTUALIZACIÓN -

Gracias por todas las respuestas. Entonces, el consenso general que veo emergente es permitir que los programadores usen cualquier nombre independientemente de lo que hagan en otros idiomas, siempre que los nombres sean descriptivos, no hace daño.


1
O simplemente requiera que cada nombre de variable comience con a $. Funciona en PHP, JavaScript y algunos compiladores C / C ++ . Con toda seriedad, esto es una cosa que PHP hizo bien en mi humilde opinión.
Joey Adams

Respuestas:


46

Habiendo programado en bastantes idiomas durante los más de 30 años de mi experiencia, diría que tratar de encontrar estándares de nombres que funcionen en cualquier idioma es probablemente una idea de pastel en el cielo.

Al principio de mi experiencia, intenté usar #define macros en C para crear cosas que harían que mi código C se parezca al código Pascal que estaba usando antes. Estaba tan acostumbrado a programar en Pascal que pensé que si podía hacer que C funcionara como Pascal me haría más productivo. Pronto descubrí que estaba equivocado.

Lo que me hizo más productivo fue aprender C y no tratar de aprovechar la sintaxis de Pascal en otro idioma solo porque me hizo sentir más cómodo.

Creo que potencialmente limitará a sus programadores al evitar que hagan algo en un idioma, simplemente porque es incorrecto hacerlo en otro idioma que esté utilizando.

Si limita sus convenciones de nomenclatura a cosas que tengan sentido para explicar el uso de la variable, entonces probablemente creará un buen código, en cualquier idioma.


3
Los nombres que tienen sentido son todas las razones que necesita.
JeffO

24

En primer lugar, no debería nombrar las cosas "lista", "nuevo", "var", "esto", ya que no son lo suficientemente descriptivas en ningún idioma.


2
Ídem "función". Si no es una palabra clave, simplemente no debe serlo.
MPelletier

11

Cambiar de, digamos, javascript a python ya es un cambio de contexto. No creo que sea malo si cambian los nombres de las variables, especialmente si los cambios en el nombre son idiomáticos con el idioma. Incluso se podría argumentar que los cambios de contexto más difíciles pueden ayudar en este caso, ya que ayuda a reforzar "amigo, estás escribiendo javascript, no python ahora".


7

Creo que si está utilizando nombres de variables descriptivas, el problema que describe debe ser mínimo. Dicho esto, si es mínimo, entonces aceptar el cambio de contexto causado por los nombres variables entre idiomas también se vuelve mínimo.


5

Las palabras más reservadas (en cualquier idioma) son bastante generales. Prefiero nombres de variables / funciones que son más descriptivos y eso significa que casi nunca encuentro este problema. Debo admitir que Charles Simonyi lo infectó con su esquema de nombres original, esto fue en Xerox a fines de los 70, incluso antes de que se llamara notación húngara, y eso también tiende a significar que los nombres son algo más que humanos sanos. usaría alguna vez como palabras reservadas.


5

No debe perder el tiempo escribiendo pautas hasta que descubra que este es un problema real , no hipotético.

Una situación en la que puedo pensar que esto puede convertirse en un problema es cuando compartes estructuras de datos entre lenguajes de programación. Por ejemplo, si tiene un objeto Javascript en el lado del cliente que se refleja en un objeto Python en el lado del servidor, y, naturalmente, desea que tengan los mismos nombres para sus miembros. En ese caso, la regla es simple: no use nombres que sean palabras reservadas en ninguno de los idiomas. Eso es. Escriba eso en las pautas si lo desea. Ahora pase a tareas más importantes.

Por cierto, ni list ni dict es una palabra reservada en Python. Se pueden usar como nombres de variables, aunque son bastante malos.


3

En mi experiencia, la solución para esto es tener convenciones de nomenclatura amplias que se apliquen a todos los idiomas. Ya sea JavaScript, C # o algún otro lenguaje funky, la forma en que se nombran las variables y las clases puede convertirse en un estándar dentro de una base de código, que es como generalmente veo resolver este problema. Las convenciones pueden ser acordadas por consenso de todos, simplemente una mayoría que quiere una directriz, la gerencia dice: "Así es como lo hacemos", o algunas otras posibilidades que imagino.

Raramente veo el problema del identificador que describe porque la mayoría de las veces mi nombre de clase o variable es lo suficientemente descriptivo como para no entrar en conflicto tan fácilmente. Al mismo tiempo, si uno está trabajando con otros y no tiene claridad sobre cómo quiere manejar el equipo, este es el punto importante.


2

No puedo ver cómo esto podría ser un problema, a menos que planee mover el código de un idioma a otro. Si personalmente tiende a olvidar qué nombres de variables son válidos, no use un nombre de variable a menos que esté personalmente seguro de que es válido. Pero si otras personas usan nombres de variables no válidos, su código no se compilará ni se ejecutará. Entonces, si está trabajando en el código de otra persona, y llamaron algo 'var', puede estar bastante seguro de que es un nombre válido en cualquier idioma que estén usando.

Si planea mover el código de un idioma a otro, es posible que necesite una lista de nombres prohibidos. Por ejemplo, mi documento de prácticas de codificación en C prohíbe usar new o class como variable porque eso hace que el código sea más difícil de transferir a C ++. En ese caso, es razonable establecer reglas que faciliten ese trabajo, si fuera necesario,


-2

Simplemente manténgase en CamelCase líder en minúsculas. Funciona en todas partes. Esto se llama buscar el mínimo común denominador entre sistemas incompatibles, ¡y se encontrará haciendo esto a menudo!


55
Excepto en algunos idiomas, el caso de la primera letra tiene una sintaxis significativa.
Karl Bielefeldt

1
... y viola el cuasi-estándar cultural establecido en muchos idiomas.
tdammers

La notación húngara es mucho más confusa que CamelCase ... ;-)
Zeke Hansell

@Karl: obviamente, la sugerencia se limita a los límites del lenguaje. ¿Sabía que Java puede iniciar nombres de variables con un signo de dólar? He visto código Java que se parece a PHP, ¡era obvio donde el programador anterior aprendió a programar!
dotancohen

@dotancohen: Recuerdo haber visto un programa pascal en una revista de pasatiempos hace muchos años, cuando pascal estaba haciendo la escena. Era obvio por la estructura del código (y el hecho de que usaban variables globales para pasar valores a subrutinas y funciones) que el programa era uno de los mejores programas básicos que había visto en Pascal. ;-)
Zeke Hansell
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.