Cómo nombrar elegantemente variables y funciones en su programa
En definitiva, no hay otra manera de elegir palabras en función del significado semántico... Sin embargo, a veces no sabemos qué palabras son más apropiadas.
Cuando piensas en algo abstracto, tiendes a preferir las palabras que te vienen a la mente primero, a menos que hagas lo contrario deliberadamente, estas palabras aparecerán rápidamente hasta desdibujar o cambiar tu idea.
Cuando piensas en un objeto concreto y sientes que te faltan palabras, entonces lo que quieres describir ya está visto, y entonces sigues buscando palabras que sean más adecuadas para ello.
Jaja, nombrar se ha convertido en lo más difícil en programación~
Martin Fowler citó una vez a Phil Karlton en un artículo:
Solo hay dos cosas difíciles en Informática: invalidación de caché
y nombrar cosas.
Dijo que esta frase fue su dicho favorito durante mucho tiempo. Se puede ver que los nombres son de hecho un gran problema para la mayoría de los programadores.
Para nosotros los chinos, el problema puede radicar en dos aspectos:
- No nos han enseñado a prestar atención a los nombres desde que empezamos a aprender programación.
Esto se puede ver en el libro de Tan Haoqiang "Introducción al lenguaje C". Se puede decir que "Introducción al lenguaje C" es el primer libro de texto sobre lenguajes de programación que muchos programadores aprenden en la universidad. A lo largo de este libro, existen varios métodos para nombrar a, b, c, x, y y z. Este método de denominación deficiente ha sido imitado por la mayoría de los programadores y ahora se puede ver en todas partes en muchos códigos de proyectos.
– La denominación requiere un cierto nivel de dominio del inglés, y el dominio del inglés de los programadores nacionales varía.
Muchos programadores han comenzado gradualmente a prestar atención a los nombres después de haber recibido educación, pero debido a su dominio del inglés, no saben qué vocabulario en inglés apropiado usar para nombrar. Algunos incluso los nombran traduciendo literalmente del chino al inglés, o usan Pinyin para nombrarlos, lo cual no vale la pena.
No creo que sea necesario exagerar la importancia de nombrar. El desarrollo de software actual ya no es la era del enfoque de Qiu Bojun con una sola mano. Cada línea de código que escriba será revisada muchas veces por otros miembros del equipo e incluso por usted mismo en un futuro próximo. Si se trata de un proyecto de código abierto, el código fuente será visto por personas de todo el mundo. Por eso la legibilidad del código se vuelve particularmente importante. Si los lectores pueden leer fácilmente la intención de su código, significa que sus habilidades para nombrar son bastante sólidas.
Por ejemplo, en un sistema de gestión, se utiliza un código como este: a = b * c
Es fácil que la gente se confunda. Aunque el programa puede funcionar normalmente, yo. Me temo que nadie puede Atrévete a modificar fácilmente esta línea de código que no comprende. Y si la modificación queda así: pago semanal =
horas_trabajadas * tasa_pago; entonces me temo que muy pocas personas no entenderán la intención de esta línea de código.
Nombrar mal también puede generar muchos comentarios innecesarios, lo cual es una trampa en la que es fácil caer. Si tiene miedo de que otros no comprendan su intención en el siguiente código, agregue comentarios. Parece una idea muy inteligente, pero en realidad es todo lo contrario. Por ejemplo, los siguientes comentarios:
int d; // tiempo transcurrido en días
Parece fácil de entender, pero todavía hay muchos problemas. En primer lugar, los comentarios no pueden seguir todas las referencias. Si comprende el significado de d en la definición, es fácil olvidarlo si continúa leyendo. En segundo lugar, si el código se actualiza, es posible que se olvide de modificar los comentarios, lo que provocará. lectores extraviados.
En lugar de utilizar dicho comentario, es mejor cambiarle el nombre directamente: int elapsedTimeInDays; Esto es claro y fácil de entender, y no es necesario mantener comentarios, ¿por qué no?
Entonces, ¿cómo empiezas a mejorar tus habilidades para nombrar?
Primero busque una especificación de código reconocida y siga estrictamente este estándar. Por ejemplo, Google ha abierto sus propias especificaciones de codificación de lenguaje internas, que podemos usar directamente. Por ejemplo, eche un vistazo a la guía de estilo Java de Google, que es bastante detallada. Además, hay C y así sucesivamente. Aquí hay una colección de especificaciones de codificación de Google para varios idiomas, que es de gran valor de referencia.
Cada una de las especificaciones del código estándar tiene una razón ganadora y es digna de nuestro cumplimiento. Pero algunos problemas de nombres no necesariamente tienen una sola mejor manera de resolverlos, lo que requiere que el equipo establezca convenciones por sí mismo. Por ejemplo, diferentes equipos pueden tener diferentes métodos de denominación para las clases de prueba unitaria de Java. Por ejemplo, a algunos equipos les gusta comenzar con debería, a otros les gusta comenzar con prueba, a algunos les gusta la nomenclatura de camello y a otros les gusta la nomenclatura de subrayado. Cada método tiene sus pros y sus contras, y ninguno de ellos puede destacarse por completo, por lo que el equipo. necesita formularlo por sí mismo. Una vez que decidas usar uno, asegúrate de ceñirte a él.
Algunas convenciones de nomenclatura se pueden comprobar automáticamente. Por ejemplo, durante el proceso de construcción de aplicaciones Java, puede consultar el complemento checkStyle para realizar algunas comprobaciones básicas de nomenclatura, como los nombres de los métodos y. los nombres de las variables cumplen con un patrón determinado, etc. Esto puede obligar a todos a cumplir ciertos acuerdos hasta cierto punto. He escrito un artículo antes, consulte aquí.
Finalmente, se debe establecer un mecanismo de revisión de código en el equipo para supervisarse mutuamente y corregir los problemas de nombres a través de la revisión del código.
Esto facilitará alcanzar una convención de nomenclatura coherente y. facilitar el desarrollo colaborativo. La revisión del código
puede tomar la forma de una revisión de reunión informal. La forma más sencilla es encontrar un horario fijo todos los días para que todos se reúnan frente a un monitor para revisar el código de todos, hacer preguntas en el acto y las partes involucradas lo registrarán y realizarán cambios después de la reunión. Este método es muy eficiente. Además, algunos equipos pueden introducir algunos mecanismos de revisión de código al incrustar código, como solicitudes de extracción, selección selectiva, etc. Este método de revisión es más pesado y tiene un ciclo de retroalimentación más largo. La ventaja es que puede garantizar que el código que finalmente se transfiera no tendrá problemas.
Muchos lenguajes y frameworks juegan con los nombres para hacerlo más legible. Por ejemplo, Jasmine, una importante herramienta de pruebas unitarias en el ecosistema de JavaScript, nombra la función de prueba con su nombre, de modo que pueda conectarse con parámetros para convertirse en un lenguaje natural de significado:
Cómo nombrar variables con elegancia y funciones en un programa?
- Diferentes fragmentos utilizan diferentes longitudes de nombres. En términos generales, los contadores de bucle (contadores de bucle) se nombran con un solo carácter de 1 dígito y las variables de juicio de bucle (variables de condición/bucle) se nombran con 1 palabra. Use de 1 a 2 palabras para nombrar, las clases usan de 2 a 3 palabras y las variables globales usan de 3 a 4 palabras.
- Utilice nombres específicos para las variables, "valor", "igual",
"datos" no es un método de denominación válido bajo ninguna circunstancia.
- Utiliza nombres significativos. El nombre de una variable debe reflejar con precisión su significado y contenido.
- No utilice nombres de prefijo o_, obj_, m_, etc. Las variables no necesitan una etiqueta de prefijo para indicar que son una variable.
- Siga las reglas de nomenclatura de variables de la empresa y apéguese al mismo método de nomenclatura de variables en el proyecto.
Por ejemplo, txtUserName, lblUserName,
cmbSchoolType, etc. De lo contrario, la legibilidad se verá afectada y las herramientas de búsqueda/reemplazo no estarán disponibles.
- Siga las reglas de nomenclatura de variables del idioma actual y no utilice letras mayúsculas/minúsculas de manera inconsistente. Por ejemplo: nombre de usuario, nombre de usuario,
NOMBRE_USUARIO, nombre_usuario m, nombre de usuario,….
Tome Java como ejemplo:
* Utilice Camel Case para el nombre de la clase: VelocityResponseWriter
* Utilice minúsculas para el nombre del paquete: com.company.project .ui
* Las variables usan nomenclatura camel case (Caso Mixto) con la primera letra minúscula: StudentName
* Las constantes usan letras mayúsculas: MAX_PARAMETER_COUNT = 100
* Las clases de enumeración (clases de enumeración) usan nombres en mayúsculas y minúsculas y los valores de enumeración (valores de enumeración) usan mayúsculas.
* Excepto para constantes y valores de enumeración, no utilice el guión bajo '_'
- No reutilice nombres de variables en diferentes contextos de la misma clase. Por ejemplo, en métodos, inicializadores y clases. Hacerlo mejora la legibilidad y la mantenibilidad.
- No utilices el mismo nombre de variable para variables con diferentes propósitos, sino dales nombres diferentes. Esto también es importante para mantener la legibilidad y la mantenibilidad.
- No utilice caracteres que no sean ASCII (caracteres no ASCII) en nombres de variables. Hacerlo puede causar problemas cuando se utiliza en varias plataformas.
-
No utilice nombres de variables que sean demasiado largos (por ejemplo, 50 caracteres). Los nombres de variables demasiado largos pueden generar un código feo y difícil de leer, y también pueden causar problemas de compatibilidad en algunos compiladores debido a limitaciones de caracteres.
- Utiliza sólo un lenguaje natural para nombrar variables. Por ejemplo, utilizar tanto el alemán como el inglés para nombrar variables puede generar inconsistencias y reducir la legibilidad.
- Utilice nombres de métodos significativos. El nombre del método debe expresar con precisión el comportamiento del método y, en la mayoría de los casos, comienza con un verbo. (Por ejemplo: createPasswordHash)
- Siga las reglas de nomenclatura de métodos de la empresa y respete el mismo método de nomenclatura en el proyecto. Por ejemplo, getTxtUserName(), getLblUserName(),
isStudentApproved(); de lo contrario, afectará la legibilidad y dejará inutilizable la herramienta de búsqueda/reemplazo.
- Siga las reglas de nomenclatura de variables del idioma actual y no utilice letras mayúsculas/minúsculas de manera inconsistente. Por ejemplo: getUserName, GetUserName, getusername,
….
Tome Java como ejemplo:
* Los métodos usan la nomenclatura camel case con la primera letra minúscula: getStudentSchoolType
* Los parámetros del método usan la nomenclatura camelCase con la primera letra minúsculas: setSchoolName(String schoolName)
- Utilice nombres de parámetros de método significativos, que pueden "documentarse a sí mismos" sin documentación.
En resumen, los problemas de nombres son solo una pequeña parte de toda la especificación de codificación, pero juega un papel vital. Es un criterio necesario para juzgar si un programador es profesional.