Aquí dejo unos pequeños tips de cosas a tener en cuenta a la hora de poner buenos nombres a clases, variables, métodos, etc.. cuando estamos desarrollando.
- Técnicas para elegir nombres
- Pronunciables.
- En inglés.
- Tan largos como sea necesario.
- Índices de los bucles i,j,k.
- Evitar reflejar información sobre los tipos en el nombre.
- Interface de una sola clase, no por norma, a veces sí, a veces no.
- El nombre de una variable, entender para qué se usa.
- No añadir información técnica al nombre.
- No utilizar sufijos.
- ¿Para qué es? buena pregunta para crear un buen nombre.
- Evita prefijos, sufijos y cualquier otra palabra con información sobre la naturaleza técnica de la abstracción.
- Nombres concretos: pensar si un nombre es aplicable a muchos elementos a la vez, en cuyo caso quizás debamos descartarlo.
- Cada línea de código sea lo más parecida a una frase con sentido en lenguaje natural.
- Utilizar prefijos de tipo pregunta, para expresiones o variables tipo boolean: is, has, does, are, contains, will, should… Incluso a veces se utilizan las negaciones isNot, doesnt, hasnt…,
- And, Or, no se utilizan, si denota dos comportamientos huele a tener que ser refactirizado.
- Prefijo is para las expresiones booleanas
- Los sinónimos y las traducciones son innecesarias, introducen una indirección que dificulta la lectura.
- El nombre de un método debe apoyarse en el contexto proporcionado por el nombre de su clase, así como por los nombres de sus argumentos y sus tipos.
- Los tipos específicos atraen nombres de variables acordes a ellos, además de comportamiento.
- Cuantos menos parámetros tenga un método, más probabilidad hay de que su implementación quede simple y de que tenga una única responsabilidad.
- Si un método no devuelve nada, es porque va a alterar el sistema, ya sea modificando los argumentos, el estado interno de la clase, la base de datos, la cola de mensajes… por tanto es recomendable poner nombres con un tono imperativo.
- Distinguir sustantivos, verbos y adjetivos: usamos sustantivos para nombres de clase/módulo/paquete y verbos para nombres de método/función.
- Practicar TDD ayuda a nombrar
- Mantener una cierta homogeneidad en la forma de implementar, suele producir mejores resultados que programar de manera arbitraria cada bloque de código.
- Los verbos responden a la pregunta de «¿qué hace?», mientras que los sustantivos responden a la pregunta de ¿qué es?, y a veces también a la pregunta de ¿para qué es?