¿Qué abreviaturas deberíamos usar para los nombres de variables de python?

En general, estoy usando la denominación estándar establecida en PEP-8 para las variables. Me gusta:

delete_projects connect_server 

Sin embargo, a veces no puedo encontrar ningún buen nombre y el nombre se extiende a uno largo:

 project_name_to_be_deleted 

Podría usar pr_nm_del , pero esto hace que el código sea ilegible. Realmente estoy sufriendo encontrar buenos nombres de variables para funciones. Cada vez que comienzo a escribir una nueva función, dediqué tiempo a buscar un buen nombre de variable.

¿Hay algún estándar para elegir ciertas abreviaturas para nombres de variables bien conocidas como, delete,project,configuration, etc. ? ¿Cómo elige nombres de variables cortos pero buenos y legibles?

Es posible que esta pregunta no dependa directamente de Python, pero como diferentes lenguajes de progtwigción utilizan diferentes nombres de variables con formato, pensé que limitaba esta pregunta solo a Python .

pr_nm_del ? También podrías dejar 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, ¡que incluso es una palabra clave del idioma!) Que ahorran una gran cantidad de escritura.

Pero eso no significa identificadores demasiado verbosos. Al igual que el contexto es importante para entender las declaraciones 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 solo el name podría estar bien. No hay necesidad de _to_be_deleted agregando _to_be_deleted .

En tu ejemplo, tienes una función llamada delete_project. ¿Se pregunta cómo llamar a la variable que almacena el proyecto a eliminar? ¡Solo ‘proyecto’!

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

Sencillo.

Los nombres de variables no tienen que ser completamente descriptivos. El contexto puede ayudar mucho a cómo entendemos un nombre en particular en un momento determinado. No es necesario decir “este es el proyecto que se eliminará” cuando se discuta una función que elimina el proyecto.

Si encuentras que los nombres de las funciones son demasiado largos, probablemente están haciendo demasiado. Si encuentra que los nombres de las 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ícita.

Este es un problema que se resuelve cuando estás haciendo la POO. El tema ( 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) ... 

Creo que los nombres largos son aceptables, siempre que sean descriptivos. Con un buen editor / IDE, los nombres cortos no pueden guardar la escritura, mientras que los nombres largos pero descriptivos pueden ahorrarle tiempo a la lectura de 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é usar 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 lejos. Por ejemplo, proj2del no es una buena idea.

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

Muy pocos nombres tienen abreviaturas “estándar”. Lo que crees 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” abreviada como “config” “cnfg” “cfg” “cnf” … así que la lección es: ¡no abrevie a menos que exista una abreviatura muy conocida!