2010-12-05 14 views
7

En general estoy usando la nomenclatura estándar establecida en PEP-8 para las variables. Al igual que:¿Qué abreviaciones deberíamos usar para los nombres de las variables de Python?

delete_projects 
connect_server 

Sin embargo a veces no puedo encontrar ningún buen nombre y el nombre sólo se extienden a larga:

project_name_to_be_deleted 

que podría utilizar pr_nm_del, pero esto hace que el código ilegible. Realmente estoy sufriendo encontrando buenos nombres de variables para las funciones. Cada vez que comienzo a escribir una nueva función, simplemente paso el tiempo para encontrar un buen nombre de variable.

¿Hay algún estándar para elegir ciertas abreviaturas para nombres de variables conocidas como delete,project,configuration, etc.? ¿Cómo se eligen nombres de variables cortas pero buenas y legibles?

Esta pregunta puede no depender directamente de Python, pero como los lenguajes de programación diferentes utilizan el formato de nombres de variables diferentes, pensé limitar esta pregunta a Python solo.

+8

Ah, 'de denominación conventions' ... como se suele decir, los dos problemas difíciles en la informática son invalidación de caché, nombrar las cosas y off-by-one errores;) – delnan

+0

Por qué no utilizar las formas cortas estándar como: del para eliminar, cnfg para la configuración, etc. – user225312

+0

@sukhbir, ese es el problema. Como novato que antes no funcionaba para ningún otro proyecto, simplemente resulta difícil elegir. Por ejemplo, con PEP-8, sabía que debería usar variables como 'name_variable', pero no sé qué elegir para las variables abreviadas o abreviaturas. Quiero decir, ¿hay alguna documentación o algún estándar para eso? No pude encontrar nada relacionado con esto. –

Respuesta

5

pr_nm_del? Es mejor que dejes que un gato lo nombre. Creo que las abreviaturas deben evitarse a toda costa, excepto las conocidas/obvias (como del, como se menciona en los comentarios, ¡esa es incluso una palabra clave de idioma!) Que ahorra un montón de tipeo.

Pero eso no significa identificadores excesivamente detallados. Así como el contexto es importante para entender enunciados en lenguajes naturales, los identificadores a menudo se pueden mantener mucho más cortos (y tan comprensibles) al referirse al contexto. En su ejemplo, project_name está perfectamente bien - el procedimiento ya se llama delete_project, por lo que project_name obviamente se refiere al nombre del proyecto que se eliminará. Incluso name solo podría estar bien. No es necesario indicarlo de nuevo agregando _to_be_deleted.

+1

Si realmente tiene que poner un nombre para el proyecto que se eliminará, ¿por qué no lo llama 'obsolete_project_name'? –

+2

Me gustaría ir por 'doomed_project_name'. –

0

Creo que los nombres largos son aceptables siempre que sean descriptivos. Con un buen editor/IDE, los nombres cortos no pueden guardar el tipeo, mientras que los nombres largos pero descriptivos pueden ahorrar tiempo para leer su código. Por lo tanto, la duración del tiempo de lectura del nombre es mucho más importante que la longitud real del nombre.

En cuanto a su ejemplo, project_name_to_be_deleted está bien. Si desea acortarlo, sugeriré que use project_name_to_del ya que del es una abreviatura conocida para delete (incluso puede encontrar esto en su teclado). Y el uso conf como configuration también es popular. Pero no vayas más allá. Por ejemplo, proj2del no es una buena idea.

Además, para cosas internas/locales, está bien usar nombres cortos y no tan descriptivos.

0

En su ejemplo, tiene una función llamada delete_project. ¿Se pregunta cómo llamar a la variable que almacena el proyecto para que se elimine? ¡Solo 'proyecto'!

def delete_project(self, project): 
    del self.projects[project] 

Simple.

Los nombres de las variables no tienen que ser totalmente descriptivos. El contexto puede prestar mucho a la forma en que entendemos un nombre particular en un momento particular. No es necesario decir "este es el proyecto que se eliminará" cuando se habla de una función que elimina un proyecto.

Si los nombres de las funciones son demasiado largos, probablemente estén haciendo demasiado.Si encuentra que los nombres de variables se están volviendo demasiado largos, piense en su propósito en el contexto actual y vea si parte del nombre puede estar implícito.

1

Este es un problema que se soluciona cuando se hace POO. El sujeto (project, configuration) es la clase y el verbo (delete, etc) es el nombre del método es decir:

class Workspace(object): 

    def delete_project(self, project): 
     log.info("Deleting", project.name) 
     ... 
0

Muy pocos nombres tienen abreviaturas "estándar". Lo que piensas que es "común" o "estándar" no es lo mismo para otra persona. El tiempo dedicado a establecer un buen nombre está bien invertido, ya que el código se lee con mucha más frecuencia de lo que está escrito. Como ejemplo, he visto "configuración" abreviado como "config" "cnfg" "cfg" "CNF" ... así que la lección es - no abreviar menos que haya una muy bien conocida abreviatura de ella!

Cuestiones relacionadas